无法使用phonegap从Android 4.4上的Storage Access Framework上传照片

时间:2014-01-04 07:48:45

标签: android cordova file-transfer android-4.4-kitkat

我有这个代码用于在服务器上上传照片

photo: function () {
        var self = this;
        navigator.camera.getPicture(function
            getPhotoTicket(function (ticket) {
                var options = new FileUploadOptions();
                var fileName = {};
                options.fileKey = "upload_file";      
                try {
                    window.resolveLocalFileSystemURI(imageURI, onSuccess, onError);
                } catch (e) {
                    console.log(e.toString());
                    fileName = imageURI.substr(imageURI.lastIndexOf('/') + 1)+'.jpg';
                }
                options.fileName = fileName;
                options.mimeType = "image/jpeg";
                options.chunkedMode = false;
                options.headers = {
                    Connection: "keep-alive"
                };
                options.httpMethod = "POST";
                var params = {};
                params.upload_ticket = ticket;

                options.params = params;
                function reload() {
                    getProfile(userID, function () {
                        app.profile_editor();
                    }, true);
                }

                function onSuccess(fileEntry) {
                    fileName = fileEntry.name;
                }

                function onError(fileEntry) {
                    fileName = imageURI.substr(imageURI.lastIndexOf('/') + 1) + '.jpg';
                }

                var ft = new FileTransfer();           
                ft.upload(imageURI, encodeURI(URL + "api/index/fileupload"), function (success) {
                    alert('PHOTO UPDATED');
                    reload();
                }, function (error) {
                    alert('error');
                }, options);
            });
        }, function () {
            console.log("error getting image")
        }, {
            sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY,
            destinationType: navigator.camera.DestinationType.FILE_URI
        });
    }

它在Android 4.3及更低版本上运行良好。但是在Android KitKat上,我得到了imageURI,如:

内容://com.android.providers.media.documents/document/image%3A352

在这篇文章中Unable to load image when selected from the gallery on Android 4.4 (KitKat) using PhoneGap Camera Plugin MBillau建议将目标类型设置为DATA_URL。我试过但没有成功。有人可以建议我如何重构我的代码吗?

0 个答案:

没有答案