phonegap filetransfer.upload将图像发送到服务器200字节太短

时间:2013-01-07 12:38:03

标签: android cordova file-transfer

我正在尝试使用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

非常感谢任何帮助。

由于

马特

2 个答案:

答案 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);