我必须在我的phonegap项目中实现文件上传功能.用户应该能够从手机记忆库或SD卡上传任何类型的文件.我使用jQuery Mobile框架设计的应用程序屏幕.我尝试输入type =“file”,但在android 4.4中不支持.我也尝试过phonegap相机API,但它只支持媒体文件.我找到了一些cordova插件(
exm1,exm2).但这些插件使用自定义UI.我想调用本机文件浏览器来选择文件&它必须适用于Android和Android iPhone平台.有没有办法实现相同的?
我发现cordova文件选择器插件(https://github.com/cdibened/filechooser)对android平台有帮助,但我无法使其工作.成功回调函数在文件选择后没有立即被触发(用android 4.4.2测试).请在下面找到我的代码,
< 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); }
解决方法
我能够获得你的插件,FileChooser正常工作.
但是有些事情必须要做.
您需要使用编辑器打开以下内容
> FileChooser.java
> FileChooserActivity.java
> FileListAdapter.java
> FileListFragment.java
> LocalStorageProvider.java
并附加
import your.package.name.R;
每个文件.
这是我使用的演示代码:
<html> <head> <title>Hello World</title> <script type="text/javascript" src="cordova.js"></script> <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script> <script type="text/javascript"> document.addEventListener("deviceready",function(){ var success = function(data) { alert("File chosen: " + data.filepath); }; var error = function(msg) { console.log( msg ); }; $('#fileinput').click(function(e) { filechooser.open({},success,error); }); }); </script> </head> <body> <input type="file" id="fileinput" name="fileinput"/> </body> </html>
另外,请注意作者希望将其用于KitKat 4.4.4.它可能适用于较低版本,但他不确定.
请注意,HTML5选择窗口与此之间的唯一区别是“内部存储”选项.
希望这可以帮助.