a543462378 2022-04-07 17:29 采纳率: 84.7%
浏览 34
已结题

怎么控制最多传三张图片

这里图片上传要控制最多三张,要怎么修改?

import React, { useRef, useState } from 'react'
import { Button, Modal, Tooltip, Image } from 'antd'
import { upload2 } from '@/api/base-data'
import { imageUrl } from '@/api/ask'

export default ({ title = '上传', suffix = '', list = [], setList, size = 'middle', disabled = false }) => {
    const inputEl = useRef(null)
    function onChange() {
        if (!inputEl.current.value) {
            return;
        }
        const files = inputEl.current.files;
        const formDatas = []
        for (let i = 0; i < files.length; i++) {
            const formData = new FormData();
            formData.append('file', files[i])
            formDatas.push(upload2(formData))
        }
        Promise.all(formDatas).then(res => {
            console.log("upload2 res is ", res)
            if (Array.isArray(res)) {
                const newList = res.map(item => item.data[0].sortePath)
                setList(newList)
            }
        })
    }

    function handleClick() {
        inputEl.current.click();
    }

    function handlePreview() {
        setVisible(true);
        console.log('list', list)
    }

    const [visible, setVisible] = useState(false)


    function onCancel() {
        setVisible(false)
    }

    return (
        <div>
            <Tooltip title='如需上传多张,请多选。再次点击会覆盖上传内容'>
                <Button size={size} type='primary' onClick={handleClick} disabled={disabled} style={{ marginRight: 4 }}>{title}</Button>
            </Tooltip>
            {list.length > 0 && (
                <span>已成功上传{list.length}张,最上传多3张。</span>
            )}
            <span style={{ display: 'inline-block', marginLeft: 4 }}>{suffix}</span>
            <input style={{ display: 'none' }} ref={inputEl} type="file" multiple onChange={onChange} />
        </div>
    )
}

  • 写回答

1条回答 默认 最新

  • Stone Lio 2022-04-07 18:16
    关注

    情况一:当多于3个的时候停止上传
    直接判断files.length是否大于3,大于3就return或不进行上传操作。
    情况二:后面的覆盖前面的
    当files.length大于3的时候,使用数组的slice函数截取最后3个或前面3个,如files.slice(files.length - 3),然后上传截取出来的文件

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月16日
  • 已采纳回答 4月8日
  • 创建了问题 4月7日

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题