【发布时间】:2014-10-09 19:01:53
【问题描述】:
我正在使用 parse.com rest api https://www.parse.com/docs/rest#files 我正在尝试从 Cordova 应用上传照片。我正在使用file plugin 和file transfer plugin 的ngCordova 项目wrapper。
当我上传照片时,它以某种方式被损坏了。见http://files.parsetfss.com/73b88ac0-8858-4f64-92bf-de6aaf29f525/tfss-7b54f8e8-77fd-4e3d-bbbe-83bf67bb08d0-profile-image.jpeg
如果我将发布请求 Content-Type 更改为 application/json,我们会看到以下 http://files.parsetfss.com/73b88ac0-8858-4f64-92bf-de6aaf29f525/tfss-219ecbb4-091f-45e6-9da1-35ad84022db6-profile-image.jpeg,这相当于上传的 jpeg 的十六进制转储。
--+++++org.apache.cordova.formBoundary
Content-Disposition: form-data; name="file"; filename="no-filename"
Content-Type: image/jpeg
Content-Length: 35476
<binary>
--+++++org.apache.cordova.formBoundary--
将此图像加载到预览中会显示已损坏的警告。在 Photoshop 中它被正确加载,所以信息在那里,只是有一些损坏。
我怀疑cordova 文件传输插件不成熟,默认添加了不需要的参数file 和filename。而且没有办法删除它们。见https://github.com/apache/cordova-plugin-file-transfer/blob/master/doc/index.md#upload
如何使用 rest api 和文件传输插件将 jpeg 二进制文件上传到 parse.com?
profilesController.js
// uploads photo to rest api given local file_uri
$scope.addPhoto = function() {
var options = {};
options.mimeType = 'image/jpeg';
options.headers = {
'X-Parse-Application-Id': 'my-id',
'X-Parse-REST-API-Key': 'my-key',
'Content-Type': 'image/jpeg'
};
$cordovaFile.uploadFile('https://api.parse.com/1/files/profile-image.jpeg', $scope.imageSrc, options).then(function(result) {
console.log('result:', result);
$ionicLoading.hide();
}, function(err) {
// An error occured. Show a message to the user
});
};
【问题讨论】:
标签: rest cordova parse-platform mime-types content-type