PhoneGap的无力的android使用文件传输到上传图片 [英] Phonegap android unable to upload image using fileTransfer
问题描述
我想用相机捕捉到的图像,并把它上传到我的AJAX端点。我已经证实了这个端点可以接受的文件(我在我的桌面上发送的形式与图像中有一个测试的HTML文件)。我使用的是科尔多瓦(PhoneGap的)1.7.0,并想获得的文件传输()工作。这里是链接,我跟着文档:
I'm trying to capture an image using the camera and upload it to my AJAX endpoint. I've confirmed that this endpoint can accept the file (I created a test HTML file on my desktop that sends a form with an image in it). I'm using Cordova (phonegap) 1.7.0, and am trying to get the fileTransfer() to work. Here is the link for the documentation that I followed:
http://docs.phonegap.com/en/ 1.0.0 / phonegap_file_file.md.html#文件传输
成功回调触发,但没有$ _FILES数据要在端点上找到。
The success callback triggers, but no $_FILES data is to be found on the endpoint.
然后我发现这篇文章:
的http://zacvineyard.com/blog/2011/03/25/upload-a-file-to-a-remote-server-with-phonegap/
使用这说明 options.chunkedMode = FALSE
。现在上传需要一个岁半,最终以3错误code,我相信这是 FileError.ABORT_ERR
失败之前。
Which suggested using options.chunkedMode = false
. Now the upload takes an age and a half, before eventually failing with an error code of 3, which I believe is FileError.ABORT_ERR
.
我缺少的东西?
从下面的应用程序,我的code:
My code from the app below:
navigator.camera.getPicture(function(imageURI){
console.log('take success! uploading...');
console.log(imageURI);
var options = new FileUploadOptions();
options.fileKey = 'file';
options.fileName = 'spot_image.jpeg';
options.mimeType = 'image/jpeg';
var params = new Object();
params.spot_id = 1788;
params.param2 = 'something else';
options.params = params;
options.chunkedMode = false;
var ft = new FileTransfer();
ft.upload(imageURI,serverURL + '/ajax.php?fname=appuploadspotimage',function(r){
console.log('upload success!');
console.log(r.responseCode);
console.log(r.response);
console.log(r.bytesSent);
},function(error){
console.log('upload error')
console.log(error.code);
},options,true);
console.log('after upload');
},function(message){
console.log('fail!');
console.log(message);
},{
quality: 50,
destinationType: navigator.camera.DestinationType.DATA_URL,
sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY
});
serverURL使用
被定义为我的AJAX端点,已列入白名单的cordova.xml域。
serverURL
is defined as the domain for my AJAX endpoint, which has been whitelisted in cordova.xml.
我已经走了这么对此,应采用不同的意见是否chunkedMode中看到了一些问题在这里。任何人有这个问题呢?
I've seen a number of questions here in SO regarding this, which varying opinions as to whether chunkedMode should be used. Anyone having this issue as well?
在尝试这在三星Galaxy S,运行ICS。
Am trying this on a Samsung Galaxy S, running ICS.
可能的人谁帮助我解决这个问题的神秘继承的啤酒工厂。
May the person who helps me solve this issue mysteriously inherit a beer factory.
推荐答案
您不能使用imageUri您从相机的成功回调在文件传输上载的方法得到的,你必须先解决URI作为这样的文件名:
You can not use imageUri that you get from camera success callback in FileTransfer upload method, you have to first resolve uri as a filename like this:
navigator.camera.getPicture(function(imageURI){
window.resolveLocalFileSystemURI(imageUri, function(fileEntry) {
fileEntry.file(function(fileObj) {
var fileName = fileObj.fullPath;
//now use the fileName in your method
//ft.upload(fileName ,serverURL + '/ajax.php?fname=appuploadspotimage'...);
});
});
});
这篇关于PhoneGap的无力的android使用文件传输到上传图片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!