2016-10-25 108 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 }));