2017-02-22 91 views
0

在前端使用react和react-router,node +表示为我的后端,cloudinary存储我的映像文件。将blob上传到Cloudinary

遇到的问题林是,cloudinary API方法斜面似乎打开/解析该图像存储在数据blob

{ images: { preview: 'blob:http://localhost:8080/19526dcc-b67d-4697-b112-e5480de61d03' } } 

    cloudinary.v2.uploader.upload(body.images.preview, function(result) { 
     console.log(result) 
    }) 

错误响应:

{ Error: ENOENT: no such file or directory, open 'blob:http://localhost:8080/e7f30c71-7e06-4c36-801f-49666e9df053' 
    at Error (native) 
    errno: -2, 
    code: 'ENOENT', 
    syscall: 'open', 
    path: 'blob:http://localhost:8080/e7f30c71-7e06-4c36-801f-49666e9df053' 
} 

如果不知道是由于反应路由器的问题,还是应该将数据转换为其他格式?

路线是这样的:

app.use('/api/', posts); 
app.use('/api/', users); 
app.use(express.static(staticPath)); 
app.use('/', express.static(staticPath)); 
app.use('/posts/*', express.static(staticPath)); 
app.use('/new/*', express.static(staticPath)); 
app.use('/validateEmail/*', express.static(staticPath)); 

回答

1

Cloudinary的upload方法接受下列类型的file参数:

  • 本地文件路径
  • 的实际数据(仅Cloudinary的SDK支持) (字节数组缓冲区)。例如,在一些Cloudinary SDK中,这可能是数据的IO输入流(例如,File.open(file,“rb”))。
  • 数据URI(Base64编码),最大值〜60MB(6291万个字符)
  • 远程FTP,HTTP或HTTPS现有,公众可访问的文件
  • 的白名单桶的S3 URL的URL地址

如果您能够访问blob数据(不仅仅是blob URL),它可以转换为数据URI,该数据URI将被file参数接受为Cloudinary的upload方法。有关将Blob转换为数据URI的帮助,请参见this StackOverflow answer