我正在尝试使用phonegap的filetransfer.upload
发送图像文件,但是返回的文件坏了,看着logcat,发送的文件似乎太短了200字节。
这是我发送文件的代码
sendImageFile = function (imageURI, imageName) {
writelog("Sending image file", 1);
var options = new FileUploadOptions();
options.fileKey="file";
options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
options.mimeType="image/jpeg";
var params = new Object();
params.value1 = "image name";
options.params = params;
options.chunkedMode = false;
var ft = new FileTransfer();
writelog("image uri length " + imageURI.length, 1);
writelog("Image options set up successfully", 1);
var ft = new FileTransfer();
ft.upload(imageURI, uploadurl, win, transFail, options);
}
以下是logcat的一些相关内容
01-07 12:27:30.743: D/FileTransfer(20066): Uploaded 114688 of 145432 bytes
01-07 12:27:31.571: D/FileTransfer(20066): got response from server
01-07 12:27:31.696: D/CordovaLog(20066): Code = 200
01-07 12:27:31.696: D/CordovaLog(20066): Response = 12099
01-07 12:27:31.696: D/CordovaLog(20066): Sent = 145236
非常感谢任何帮助。
由于
马特
答案 0 :(得分:2)
找到解决方案。我的服务器接受所有作为文件发送的数据,而不是从表单提交中分解(我相信)。这导致在主图像数据之前有几行文本。
为了解决这个问题,我安装了一个旧的fileTransfer插件(https://github.com/phonegap/phonegap-plugins/tree/master/Android/FileUploader),恢复到1.8g版本的phonegap(因为我不确定)如何暂时更新旧版插件。)
编辑fileUpload.java文件以删除要发送的文件之前的所有文本。现在它可以被服务器读取
答案 1 :(得分:1)
你不能使用你在FileTransfer上传方法中从Android上的相机成功回调获得的imageUri,你必须首先解析uri作为这样的文件名:
navigator.camera.getPicture(function(imageURI){
window.resolveLocalFileSystemURI(imageURI, function(fileEntry) {
fileEntry.file(function(fileObj) {
var fileName = fileObj.fullPath;
//now use the fileName in your upload method
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = fileName.substr(fileName.lastIndexOf('/')+1);
//...
});
});
}, errorFn, cameraParams);