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日

悬赏问题

  • ¥30 自适应 LMS 算法实现 FIR 最佳维纳滤波器matlab方案
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像