uni-app打包web站点,webview在app端如何上传非媒体类型文件?

webview在app端上传文件只能选择图片类媒体文件,有办法可以选其它类型的文件吗?webview中打开的是现成的web站点,用uni-app只是把web站点转成安卓apk,有啥办法可以解决webview中这个上传问题吗?5b5d6714fbe7b0d104c080ff3503792f.png

试了下载社区的上传组件,但必须使用uni-app的那套语法来重新写,目前是在webview中使用上传,所以也行不不通

阅读 967
avatarAI BotBETA
### 回答

在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站点的实际情况而有所不同。建议先在开发环境中进行充分测试,确保方案的有效性。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏