• vue3 + antd 图片上传 (精简篇)cv即可


    使用antd组件库里的 a-upload 上传图片 

    template代码:

    1. <a-upload
    2. name="idCardzm"
    3. list-type="picture-card"
    4. class="avatar-uploader"
    5. :show-upload-list="false"
    6. :before-upload="beforeUpload"
    7. :customRequest="handleChange"
    8. >
    9. <img class="img" v-if="formTableData.idCardzm" :src="formTableData.idCardzm" alt="身份证头像面" />
    10. <div v-else>
    11. <loading-outlined v-if="loading">loading-outlined>
    12. <plus-outlined v-else>plus-outlined>
    13. <div class="ant-upload-text">身份证头像面div>
    14. div>
    15. a-upload>
    16. <a-upload
    17. name="idCardbm"
    18. list-type="picture-card"
    19. class="avatar-uploader"
    20. :show-upload-list="false"
    21. :before-upload="beforeUpload"
    22. :customRequest="handleChange"
    23. >
    24. <img class="img" v-if="formTableData.idCardbm" :src="formTableData.idCardbm" alt="身份证国徽面" />
    25. <div v-else>
    26. <loading-outlined v-if="loading">loading-outlined>
    27. <plus-outlined v-else>plus-outlined>
    28. <div class="ant-upload-text">身份证国徽面div>
    29. div>
    30. a-upload>
    31. <a-upload
    32. name="idCardsc"
    33. list-type="picture-card"
    34. class="avatar-uploader"
    35. :show-upload-list="false"
    36. :before-upload="beforeUpload"
    37. :customRequest="handleChange"
    38. >
    39. <img class="img" v-if="formTableData.idCardsc" :src="formTableData.idCardsc" alt="手持身份证照片" />
    40. <div v-else>
    41. <loading-outlined v-if="loading">loading-outlined>
    42. <plus-outlined v-else>plus-outlined>
    43. <div class="ant-upload-text">手持身份证照片div>
    44. div>
    45. a-upload>
    a-upload 属性解析
    • name:发到后台的文件参数名 (常用于同一页面需要写多个上传图片时)
    • list-type:上传列表的内建样式,支持三种基本样式 text, picture 和 picture-card
    • show-upload-list:是否展示 uploadList, 可设为一个对象,用于单独设定 showPreviewIcon, showRemoveIcon 和 showDownloadIcon
    • before-upload:上传文件之前的钩子,参数为上传的文件,若返回 false 则停止上传。支持返回一个 Promise 对象,Promise 对象 reject 时则停止上传,resolve 时开始上传( resolve 传入 File 或 Blob 对象则上传 resolve 传入对象)。
    • customRequest:通过覆盖默认的上传行为,可以自定义自己的上传实现 (最常用

    script 代码:

    1. // 初始值
    2. let formTableData = ref({
    3. idCardzm: '',
    4. idCardbm: '',
    5. idCardsc: '',
    6. });
    7. //主要用图片上传前的限制操作(非必写)
    8. const beforeUpload = file => {
    9. const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
    10. if (!isJpgOrPng) {
    11. message.error('只能上传JPG、PNG格式图片!');
    12. }
    13. const isLt2M = file.size / 1024 / 1024 < 2;
    14. if (!isLt2M) {
    15. message.error('图片尺寸不能超过2MB!');
    16. }
    17. return isJpgOrPng && isLt2M;
    18. };
    19. // 图片上传
    20. const loading = ref(false);
    21. const handleChange = async (info) => {
    22. loading.value=true
    23. //info.filename的值与a-upload里的name对应,这样就可以多个位置都使用同一方法
    24. const idCard = info.filename
    25. const FormDatas = new FormData();
    26. FormDatas.append("multipartFile", info.file);
    27. //api.upload_uploadImages后端给的图片上传解析的接口方法
    28. const data = (await api.upload_uploadImages(FormDatas)).data
    29. loading.value=false
    30. //将后端返回的图片路径值赋给所在图片所绑定的值
    31. formTableData.value[idCard] = data
    32. };

    style代码:

    1. .avatar-uploader>.ant-upload {
    2. width: 128px;
    3. height: 128px;
    4. }
    5. .img {
    6. max-width: 100%;
    7. max-height: 100%;
    8. }
    9. .ant-upload-select-picture-card i {
    10. font-size: 32px;
    11. color: #999;
    12. }
    13. .ant-upload-select-picture-card .ant-upload-text {
    14. margin-top: 8px;
    15. color: #666;
    16. }

    直接复制代码即可,回头补充删除图片事件

  • 相关阅读:
    简单易懂,高效实用的接口文档编写技巧
    二、OSPF协议基础
    最小区间覆盖问题
    怎样把flac转换成mp3?四个步骤完成
    React-组件通信
    真杜比全景声家庭影院级投影设备,当贝做到了五千元内也支持
    【从零开始的Java开发】2-9-2 案例:仿Windows计算器
    Nucleic Acids Research | AlphaFold 蛋白质结构数据库
    .NET的键盘Hook管理类,用于禁用键盘输入和切换
    代理模式一篇拿捏
  • 原文地址:https://blog.csdn.net/weixin_73318685/article/details/134338378