我必须在我的phonegap项目中实现文件上传功能。用户应该能够从手机记忆库或SD卡上传任何类型的文件。我尝试输入type =" file",但在android 4.4中不支持。我也试过了phonegap相机API,但它只支持媒体文件。我发现cordova文件选择器插件(https://github.com/cdibened/filechooser)会有所帮助,但我无法使其工作。成功回调函数在文件选择后不会立即触发。请在下面找到我的代码,
<input type="file" id="fileinput" name="fileinput"/>
$("#fileinput").bind('click',function(){
console.log("choose file selected");
filechooser.open( {}, fileChooseSuccess, fileChooseFailed );
});
function fileChooseSuccess(data) {
var filepath = data.filepath;
console.log("file path:"+filepath);
}
function fileChooseFailed(msg) {
console.log(msg);
}
当用户选择第二个文件时,会触发第一个成功回调函数。同样,当用户选择第三个文件(使用Android 4.4.2测试)时,会触发第二个成功回调函数。我无法解决此问题。 “filechooser.open”的第一个参数是强制性的吗?我必须通过什么来支持所有文件类型?
在插件文档中,它写了“你应该更改你的Manifest中的com.ianhanniballake.localstorage.documents,以及LocalStorageProvider.AUTHORITY字段”。我需要改变什么?
非常感谢任何建议。
答案 0 :(得分:0)
phonegap / cordova不支持输入文件类型。遗憾。
您需要使用FileTransfer插件,如此示例所示,并在此处讨论How to upload file with Phonegap and JqueryMobile?:
function onDeviceReady() {
// Retrieve image file location from specified source
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) {
var options = new FileUploadOptions();
options.fileKey="file";
options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1)+'.png';
options.mimeType="text/plain";
var params = new Object();
options.params = params;
var ft = new FileTransfer();
ft.upload(imageURI, encodeURI("http://some.server.com/upload.php"), 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);
}