Cordova android 输入文件:无法访问设备上的某些目录
Cordova android input file: cannot access some directories on device
我的应用程序基于 Cordova,允许用户将图像和 PDF 文件上传到服务器。
我正在使用带有 Dropzone.js 插件的简单 <input type="file">
进行布局和传输。它适用于 iOS 和 Android。单击按钮后文件管理器启动,您可以选择文件并上传。
问题是,在 Android 上,用户无法从文件选择器上部的目录中选择文件。我有一台 LG G4,所以我无法从最后的文件、Google 驱动器、图像、已下载的内存中进行选择。我可以毫无问题地从画廊、照片和文件管理器中进行选择,但不能选择该行上方的任何目录。
我有读取外部存储的权限。我在这里错过了什么?
这是测试仪的屏幕:
Dropzone html,它是最基本的。 Dropzone 不会在此处添加 input type=file,但很像 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/*"
,它可以正常工作。
我的应用程序基于 Cordova,允许用户将图像和 PDF 文件上传到服务器。
我正在使用带有 Dropzone.js 插件的简单 <input type="file">
进行布局和传输。它适用于 iOS 和 Android。单击按钮后文件管理器启动,您可以选择文件并上传。
问题是,在 Android 上,用户无法从文件选择器上部的目录中选择文件。我有一台 LG G4,所以我无法从最后的文件、Google 驱动器、图像、已下载的内存中进行选择。我可以毫无问题地从画廊、照片和文件管理器中进行选择,但不能选择该行上方的任何目录。
我有读取外部存储的权限。我在这里错过了什么?
这是测试仪的屏幕:
Dropzone html,它是最基本的。 Dropzone 不会在此处添加 input type=file,但很像 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/*"
,它可以正常工作。