2016-10-25 110 views
0

http://cloudinary.com/documentation/image_upload_api_reference#upload正确的反应原生“文件”的Cloudinary API图像上传?

我试过如下:从相机胶卷

用户精选:

{ 
    data: "/9j/4AAQSkZJRgABAQAASABIAAD/4QBYRXhpZg..." 
    origURL: "assets-library://asset/asset.JPG?id=ED7AC36B-A150-4C38-BB8C-B6D696F4F2ED&ext=JPG", 
    uri: "file:///Users/me/Library/Developer/CoreSimulator/Devices/1BC4A449-46CF-4ADE-A9B5-78906C9C50FB..." 
} 

然后服务器(Node.js的),我想使用uri从上面:

addUserPhoto(uri) { 
    const photo = new Promise((resolve, reject) => { 
     const base64URI = new Buffer(uri).toString('base64'); 
     cloudinary.v2.uploader.upload('data:image/jpeg;base64,'+base64URI, {}, (result) => { 
     console.log(result); 
     resolve(result); 
     }); 
    }); 
    return photo; 
    } 

但我得到的错误: { message: 'Invalid image file', http_code: 400 }

我不确定正确的“文件”。我究竟做错了什么?我应该从相机胶卷数据中选择哪个字段,以及如何将其转换为Cloudinary API兼容的“文件”?

回答

0

uri是您的图像(在电话上)的本地文件路径,所以服务器无法访问它。

将图像发送到远程主机的方式是发送数据。

所以它最终成为了data之一。就像这样:

data:image/jpeg;base64,/9j/4AAQSkZ...

之后,节点快递是给我Error: request entity too large(所以我认为这是错误仍然)

原来我不得不这样做: app.use(bodyParser.json({ limit: '50mb' })); app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));