当前位置: 首页 > news >正文

解决 Ant Design Vue Upload 组件在苹果手机上只能拍照无法选择相册的问题

最近上线发现了这个问题,看别的文档改了很多属性也不行,发现element组件就可以,对比之后就知道问题所在。

原因:

默认情况下,iOS 设备会将 <input type="file">capture 属性设置为 true,导致用户只能通过相机拍照上传图片,而不能从相册中选择图片。这个问题是因为默认情况下,a-upload 组件会在 <input type="file"> 上添加 capture 属性,从而限制了用户的选择方式

这个就是正常的:

 <input type="file" name="file">

解决:

需要确保 <input type="file"> 不包含 capture 属性。在 Ant Design Vue 中,a-upload 组件默认会添加 capture 属性。

vue3写法

<template><a-uploadref="uploadRef"v-model:file-list="form.deviceImagesUrl":action="fileUploadUrl"list-type="picture-card":max-count="10":headers="headers"@preview="handlePreview":disabled="props.showType === 2"name="file"><plus-outlined /><div style="margin-top: 8px">Upload</div></a-upload>
</template><script>
import { onMounted, ref } from 'vue';export default {const uploadRef = ref(null);onMounted(() => {// 在组件挂载后,找到 input 元素并删除 capture 属性,并添加 name 属性const inputElement = uploadRef.value?.$el?.querySelector('input[type="file"]');if (inputElement) {inputElement.removeAttribute('accept'); // 移除 accept 属性inputElement.removeAttribute('capture'); // 移除 capture 属性inputElement.setAttribute('name', 'file'); // 添加 name 属性}});},
</script>

<input type="file"> 属性详解

1. accept
  • 作用: 指定可以接受的文件类型。例如,accept="image/*" 表示只接受图像文件。
  • 示例<input type="file" accept="image/*">
2. capture
  • 作用: 指定是否应该激活设备的摄像头或麦克风。这个属性主要用于移动设备。
  • :
    • camera: 强制使用摄像头。
    • user: 用户选择(默认)。
    • environment: 后置摄像头。
  • 示例<input type="file" capture="camera">
3. multiple
  • 作用: 允许用户选择多个文件。
  • 示例<input type="file" multiple>
4. webkitdirectory
  • 作用: 允许用户选择整个目录而不是单个文件。
  • 示例<input type="file" webkitdirectory>
5. directory
  • 作用: 类似于 webkitdirectory,但适用于非 WebKit 浏览器。
  • 示例<input type="file" directory>


http://www.mrgr.cn/news/20850.html

相关文章:

  • 解决 Transformer 根本缺陷,CoPE 论文爆火:所有大模型都能获得巨大改进!
  • 使用 nuxi init 创建全新 Nuxt 项目
  • 代码训练营 Day24 | 93.复原IP地址 |78.子集
  • 量化交易策略:中国市场的Carhart四因子模型python代码解析
  • 大牛直播SDK的RTSP直播播放器怎么样?
  • 【C题论文】2024数学建模国赛C题38页成品+配套所有小问代码+高清可视化结果图
  • 【日记】往哈尔滨西天取经、弱电工程师与软考证书(2113 字)
  • 【IEEE出版,IEEE Xplore等多数据库检索】第五届智能设计国际会议(ICID 2024,10月25-27)
  • VisualStudio环境搭建C++
  • Patlibc———更快捷的更换libc
  • 2024 年高教社杯全国大学生数学建模竞赛B题—生产过程中的决策问题(讲解+代码+成品论文助攻)
  • FreeRTOS学习笔记(一)初认RTOS
  • 如何使用GPT-4o
  • 【PyCharm安装】2024最新安装、激活Python+PyCharm教程。附带激活码、Python安装包、PyCharm安装包、激活码!!!
  • 【RAG】LongRAG:利用长上下文LLMs增强检索增强生成
  • shell脚本编程(正则表达式与grep +awk+sed+expect详解)
  • 力扣416-分割等和子集(Java详细题解)
  • java代码审计-ofCMS
  • Java程序打jar包(包含作者各种踩坑案例,力求为大家避雷)
  • PLC协议转换网关:巨控NET400