在外部网站上有一个输入(类型 - 文件)字段,我需要将图像上传到此输入。 在android中我用WebChromeClient和openFileChooser(ValueCallback uploadMsg,String acceptType,String capture)函数完成了这个任务。 我不知道如何在phonegap / cordova中解决这个任务。
我的代码是:
function initialize() {
document.addEventListener('deviceready', onDeviceReady, false);
var ref = null;
}
function onDeviceReady() {
ref = window.open('http://example.com',
'_blank', 'location=no', 'EnableViewPortScale=yes');
ref.addEventListener('loadstop', LoadStop);
}
function LoadStop(event) {
if (event.url == 'http://example.com/Add') {
navigator.camera.getPicture(uploadPhoto, function(message) {
alert('get picture failed');
}, {
quality : 50,
destinationType : navigator.camera.DestinationType.FILE_URI,
sourceType : navigator.camera.PictureSourceType.PHOTOLIBRARY
});
}
}
function uploadPhoto(imageURI) {
console.log("imageURI----: " + imageURI);
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = "IMAG0475";
options.mimeType = "image/*";
var params = new Object();
options.params = params;
var ft = new FileTransfer();
ft.upload(imageURI,
encodeURI("http://example/Add"), win,
fail, options);
}
function win(r) {
console.log("Code = " + r.responseCode);
console.log("Response = " + r.response);
console.log("Sent = " + r.bytesSent);
}
function fail(error) {
alert("An error has occurred: Code = " + error.code);
console.log("upload error source " + error.source);
console.log("upload error target " + error.target);
}
答案 0 :(得分:0)
默认情况下,cordova应用程序无法访问Android手机中的所有存储位置,例如sdcard,external-files。
要解决此问题,请将以下行复制到cordova项目的config.xml中,
<preference name="AndroidExtraFilesystems" value="files,files-external,documents,sdcard,cache,cache-external,root"/>
Config.xml可以在/platforms/android/res/xml/config.xml
找到只需添加以上行并再次构建项目。