2016-09-26 57 views
3

我想通过在AngularJs中的$http提供者发布FormData对象。使用Angular/Cordova上传文件

在浏览器中,可以将文件值input[type=file]附加到FormData并通过$http发布。例如:

formData.append('file', inp.files[0], 'nai.jpg'); 
formData.append('text', 'hello'); 
$http.post('url', formData, { 
    transformRequest: angular.identity, 
    headers: { 'Content-Type': undefined } 
}); 

并且服务器获得了带有两个主体字段的发布请求。但在科尔多瓦的应用程序,input[type=file]不可用,这样我就可以从用户通过本地插件像这样得到fileURI

navigator.camera.getPicture(function(fileURI) { 
    // i got fileURI 
}); 

现在,请给我解释一下我怎样才能把fileURI作为文件formData和发送由$http提供商的Angular(不是FileTransfer)。

回答

0

如果我们在配置对象中指定选项,Cordova还会提供图像的base64数据。以便您可以将相同的base64数据传递给该服务。

var cameraOptions = { 
    destinationType : 0 /*(DATA_URL -- For base64 data)*/ 
} 
navigator.camera.getPicture(cameraSuccess, cameraError, cameraOptions); 
+0

thx。是的,但这种方式太重了。想象一下,在我提交之前,我应该将5mb的字符串保存到JavaScript变量中。 – Nainemom