适用于 android 的 Cordova '本机文件选择器'插件不起作用
Posted
技术标签:
【中文标题】适用于 android 的 Cordova \'本机文件选择器\'插件不起作用【英文标题】:Cordova 'native file chooser' plugin for android is not working适用于 android 的 Cordova '本机文件选择器'插件不起作用 【发布时间】:2014-11-06 06:53:52 【问题描述】:我必须在我的 phonegap 项目中实现文件上传功能。用户应该能够从手机内存或 SD 卡上传任何类型的文件。我试过输入 type="file",但在 android 4.4 中不支持。我也试过 phonegap camera 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”的第一个参数是强制性的吗?我必须通过什么来支持所有文件类型?
在插件文档中,它写道“您应该更改清单中的 com.ianhanniballake.localstorage.documents 以及 LocalStorageProvider.AUTHORITY 字段”。我必须改变什么?
非常感谢任何建议。
【问题讨论】:
【参考方案1】: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);
【讨论】:
但是由于cordova的相机插件api只允许选择图片而不是其他文件类型,你将如何处理不是图像/视频的文件的场景?以上是关于适用于 android 的 Cordova '本机文件选择器'插件不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Cordova 相机插件适用于模拟器,而不适用于 Android 设备
如何在适用于 Android 和 cordova 的项目中单击通知时显示特定页面?
如何清除适用于 iOS 平台的 Cordova 应用程序的 localStorage
Phonegap/Cordova Geolocation 不适用于 Android 4.0+,但适用于所有其他平台
如何将适用于 Android 的 Pushwoosh 插件添加到 Cordova IBM Worklight (@Eclipse)?