我的应用程序基于Cordova,允许用户将图像和PDF文件上传到服务器.
我正在使用一个简单的< input type =“file”>使用Dropzone.js插件进行布局和传输.它适用于iOS和
Android.单击文件管理器启动的按钮后,您可以选择文件并上传.
问题是,在Android上,用户无法从文件选择器上部的目录中选择文件.我有一个LG G4,所以我不能选择上一个文件,谷歌硬盘,图像,下载,内存.我可以选择图库,照片和文件管理器没有任何问题,但不能在线上方的任何目录.
我有权读取外部存储空间.我在这里错过了什么?
Dropzone html,它的基本功能. Dropzone不会在这里添加输入类型=文件,但是,就像jQuery一样,它会在选择文件时动态执行.
<form action="file-upload" class="dropzone dropzone-form dz-clickable" rem="dropform" id="dropzone-form">
<input type="hidden" name="userId" value.bind="user_id" class="au-target" au-target-id="164">
<div class="text-center add_btn_wrapper">
<a class="btn btn-default btn-md dz-clickable" rem="dropbutton">Select file</a>
</div>
<div class="dz-default dz-message">
<span>Upload your scans</span>
</div>
</form>
Dropzone js声明(我使用Aurelia.js(es5 / 6)作为前端框架):
this.zone = new Dropzone(
_this.element.querySelector("[rem='dropform']"), {
url: this.auth.config.baseUrl + "../_uploader/file/upload",
maxFiles: this.max_files,
acceptedFiles: this.accepted_files,
clickable: [_this.element.querySelector("[rem='dropbutton']"), _this.element.querySelector("[rem='dropform']")],
dictDefaultMessage: this.label,
addRemoveLinks: this.allow_remove,
removedfile: (file) => { .... },
init: function() {
this.on("addedfile", (fx) => { .... });
this.on("complete", (fx) => { .... });
}
});
在AndroidManifest.xml中:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS"/>
最佳答案 好的,问题是由acceptedFiles参数引起的.对于桌面我有“image / *,.pdf”并且它有效,但具有此值的cordova感到困惑并限制了我的访问权限.对于移动设备我现在只使用“image / *”,它可以正常工作.