我必须在我的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);
}
答案 0 :(得分:3)
我能够获得你的插件,FileChooser正常工作。
但是有些事情必须要做。 您需要使用编辑器打开以下内容
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选择窗口与此之间的唯一区别是“内部存储”选项。
希望这有帮助。
答案 1 :(得分:0)
对于Android,你可以使用这个插件: https://github.com/cdibened/filechooser
输入文件也应该在android上工作(在大多数版本上,但它不能在android 4.4,4.4.1和4.4.2上工作) HTML file input in android webview (android 4.4, kitkat)
对于iOS,没有插件,您没有本机文件浏览器。