无法从Android 4.4中的图库上传图片

时间:2014-11-25 02:20:33

标签: android cordova android-4.4-kitkat

我正在尝试使用下面的代码上传从图库中获取的图像。

//imageUri is a uri which is gotten by Phonegap camera API 
//(use option Camera.PictureSourceType.PHOTOLIBRARY&&Camera.DestinationType.FILE_URI) 
var imageUri = getImageUri();

//handlerUri is a uri to upload the image 
var handlerUri = getHandlerUri();

window.resolveLocalFileSystemURI(imageUri, function(fileEntry) {
    fileEntry.file(function(fileObj) {
        var fileName = fileEntry.name;
        var options = new FileUploadOptions();
        options.headers = {
            Connection: "close"
        };
        options.fileKey = "uploadfiles";
        if (fileName.indexOf('/') > -1) {
            options.fileName = fileName.substr(fileName.lastIndexOf('/') + 1);
        } else {
            options.fileName = fileName;
        }

        options.mimeType = "image/jpeg";
        options.chunkedMode = false;
        options.params = params;

        var ft = new FileTransfer();
        imageUri = fileEntry.nativeURL;

        ft.upload(imageUri, handlerUri,
            function(r) {
                if (r.response == "success") {

                } else {

                }
            },
            function(error) {},
            options, true);
    }, function(error) {

    });
}, function(error) {

});

对于Android 4.4以下的设备,该应用效果很好。但是,在Android 4.4 KitKat中,相同的代码不再起作用。

注意:长时间上传后,我在LogCat中只收到了代码3错误。有人说代码3是连接错误,但它不应该是我的条件,因为相同的代码在Android 4.4下运行良好。

有人可以帮忙吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我终于自己解决了这个问题。似乎错误的文件名是根。 当我使用旧代码

获取文件名时
var fileName = fileEntry.name;

文件名是7962,这是不正确的。

我使用下面的代码来解决此问题:

var fileName = fileEntry.nativeURL.substr(fileEntry.nativeURL.lastIndexOf('/') + 1);

感谢所有人。