HarmonyOS NEXT开发进阶(十八):附件上传功能无法选择pdf文档?

文章目录

    • 一、问题描述
    • 二、问题分析
      • 2.1 accept
      • 2.2 唯一文件类型说明符
    • 三、解决方案
    • 四、总结
    • 五、参考文档

一、问题描述

项目组在应用vant进行H5项目开发功测阶段,出现纯血鸿蒙系统在上传附件时无法查看doc、docx、pdf等文档。代码示例如下:

bash 复制代码
 <van-uploader class="upload-tipTest" :after-read="afterRead" v-if="pageParams.maxNum > preList.length">
  <img class="add-icon" :src="plusIcon" />
  <div class="add-title">添加附件</div>
</van-uploader>

二、问题分析

经参照Vant2 Uploader文件上传文档,其官方文档有如下介绍:

注意:accept、capture 和 multiple 为浏览器 input 标签的原生属性,移动端各种机型对这些属性的支持程度有所差异,因此在不同机型和 WebView 下可能出现一些兼容性问题。

注意:van-uploaderaccept 为允许上传的文件类型,默认值为:image/*。代表支持选择"任何图片文件"。

再继续看下对浏览器input标签的介绍,

带有 type="file"<input> 元素允许用户可以从他们的设备中选择一个或多个文件。选择后,这些文件可以使用提交表单的方式上传到服务器上,或者通过 Javascript 代码和文件 API 对文件进行操作。

accept属性介绍如下:

2.1 accept

accept 属性是一个字符串,它定义了文件 input 应该接受的文件类型。这个字符串是一个以逗号为分隔的唯一文件类型说明符列表。由于给定的文件类型可以用多种方式指定,因此当你需要给定格式的文件时,提供一组完整的类型指定符是非常有用的。

例如,可以通过多种方式识别 Microsoft Word 文件,因此接受 Word 文件的网站可能使用像这样的 <input>

bash 复制代码
<input
  type="file"
  id="docpicker"
  accept=".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" />

2.2 唯一文件类型说明符

唯一文件类型说明符是一个字符串,表示在 file 类型的 <input> 元素中用户可以选择的文件类型。每个唯一文件类型说明符可以采用下列形式之一:

  • 一个以英文句号(".")开头的合法的不区分大小写的文件名扩展名。例如:.jpg、.pdf 或 .doc。
  • 一个不带扩展名的 MIME 类型字符串。
  • 字符串 audio/*,表示"任何音频文件"。
  • 字符串 video/*,表示"任何视频文件"。
  • 字符串 image/*,表示"任何图片文件"。
    accept 属性的值是包含一个或多个(用逗号分隔)唯一文件类型说明符的字符串。例如,一个文件选择器需要能被表示成一张图片的内容,包括标准的图片格式和 PDF、DOC 文件,大概是这样的:
bash 复制代码
<input type="file" accept="image/*,.pdf,.doc,.docx,.xls,.xlsx,.txt" />

三、解决方案

通过设置accept属性,支持设定的文档类型,例如:accept="image/*,.pdf,.doc,.docx,.xls,.xlsx,.txt"

四、总结

前端项目开发阶段,应用H5实现移动应用功能可以解决多端原生开发工作量大、多技术栈技能要求高等诸多问题,但同时还必须意识到H5相关属性在原生端存在适配兼容性问题,需开展兼容性适配测试。

五、参考文档

相关推荐
程序员老刘·2 天前
ArkUI-X 6.0 跨平台框架能否取代 Flutter?
flutter·鸿蒙系统·跨平台开发·客户端开发
严同学正在努力3 天前
VMware安装银河麒麟V10操作系统X86_64全过程
数据库·鸿蒙系统·kylin
云栖梦泽3 天前
鸿蒙应用的云原生部署实战
鸿蒙系统
月上柳青4 天前
DSoftBus 设备发现机制技术分析
鸿蒙系统
云栖梦泽4 天前
鸿蒙企业级应用安全开发实战:从数据加密到合规防护
开发语言·鸿蒙系统
云栖梦泽5 天前
鸿蒙分布式应用全链路性能调优实战
开发语言·鸿蒙系统
云栖梦泽10 天前
鸿蒙UI开发基础——核心组件、样式系统与资源管理
开发语言·鸿蒙系统
云栖梦泽11 天前
鸿蒙应用AI赋能与国际化落地实战:让待办应用跨越语言与智能边界
开发语言·鸿蒙系统
码界奇点15 天前
基于Spring Boot和Vue的多通道支付网关系统设计与实现
vue.js·spring boot·后端·毕业设计·鸿蒙系统·源代码管理