webview在app端上传文件只能选择图片类媒体文件,有办法可以选其它类型的文件吗?webview中打开的是现成的web站点,用uni-app只是把web站点转成安卓apk,有啥办法可以解决webview中这个上传问题吗?
试了下载社区的上传组件,但必须使用uni-app的那套语法来重新写,目前是在webview中使用上传,所以也行不不通
webview在app端上传文件只能选择图片类媒体文件,有办法可以选其它类型的文件吗?webview中打开的是现成的web站点,用uni-app只是把web站点转成安卓apk,有啥办法可以解决webview中这个上传问题吗?
试了下载社区的上传组件,但必须使用uni-app的那套语法来重新写,目前是在webview中使用上传,所以也行不不通
### 回答
在uni-app中打包web站点并使用webview来展示时,确实默认可能只能上传媒体文件(如图片)。要上传非媒体类型文件(如PDF、文档等),你可以尝试以下方法:
1. **修改Android原生代码**:
- 你可能需要修改uni-app生成的Android原生代码,特别是webview组件的相关部分,以允许选择非媒体文件。
- 这通常涉及到修改`WebView`的`WebChromeClient`和`ValueCallback<Uri[]>`的实现,确保`ACCEPT_TYPE`中包含`*/*`或具体的非媒体MIME类型。
2. **使用文件选择器插件**:
- 虽然你提到已经尝试过社区中的上传组件,但如果你愿意稍微调整webview的使用方式,可以考虑在webview之外的uni-app原生页面中使用文件选择器插件。
- 用户选择文件后,可以将文件路径或内容传递给webview中的页面,再由webview页面进行上传操作。
3. **调整web站点代码**:
- 如果可能,调整web站点中的文件上传逻辑,使其能够处理从uni-app传递的文件数据(例如通过URL或Base64编码)。
- 这可能需要web站点后端支持接收非标准形式的文件上传请求。
4. **自定义Intent**:
- 在Android中,你可以通过自定义Intent来启动一个文件选择器,该选择器允许用户选择任何类型的文件。
- 捕获选择结果后,你可以将这些文件数据传递给webview中的页面进行上传。
由于你提到的是现成的web站点,并且希望尽可能少地修改web站点代码,因此调整Android原生代码或使用文件选择器插件可能是较为可行的方案。不过,这些方案都需要一定的Android开发知识。
注意,具体实现可能会因uni-app版本、Android系统版本以及web站点的实际情况而有所不同。建议先在开发环境中进行充分测试,确保方案的有效性。
6 回答5.3k 阅读✓ 已解决
9 回答9.5k 阅读
3 回答10.6k 阅读✓ 已解决
4 回答7.5k 阅读
5 回答8.4k 阅读
2 回答10.5k 阅读✓ 已解决
2 回答6.6k 阅读✓ 已解决