ant-design Upload上传组件使用 编辑功能图片回显

简介: ant-design Upload上传组件使用 编辑功能图片回显

当我们使用 ant-design Upload上传组件进行编辑功能回显时,不能使用使用 action上传,自己手续一个自定义上传因此我们要这样设置。

<Upload                                                                                
    listType="picture-card"                                                                        
    fileList={fileLists[name]}                                                                                    
     // maxCount={1} 
     //上传文件之前的钩子                                                                                                                                                   
     beforeUpload={(e) => { handleChanges(e, name) }}                                                                                                                                                
     ={(e) => { handleRemoves(e, name) }}                                                                    > 
     <div>                                                                                
         <PlusOutlined />                                                                            
         <div style={{ marginTop: 8 }}>Upload</div>                                                                           
     </div>                                                                    
</Upload>

因为我们要做的是编辑回显获取的数据形式为[{ url: 图片路径, uid: 图片标识 }]导致方式图片显示数组fileLists导致自动上传无法返回路径,使用beforeUpload事件不使用onChange是因为,onChange做图片上传会和onRemove事件冲突,当删除图片时两个事件会一起执行所以我们使用beforeUpload避开事件冲突。

编辑回显图片上传

// 编辑图片上传事件
    const handleChanges = (file, name) => {
        let arr = fileLists
        console.log(file);
        let param = new FormData();
        param.append("file", file);
        axios({
            url: "/api/common/upload",
            method: "post",
            data: param
        }).then(res => {
            console.log(res.data);
            if (res.data.code == 1) {
                //uid的作用防止上传相同图片key值报错和方便onRemove删除
                arr[name].push({ url: '域名' + res.data.url, uid: file.uid });
            }
            //要使用[...arr]这样的格式存放数组,否则新增图片数据无法再页面及时显示
            setFileLists([...arr]);
            console.log(arr);
        });
    };

编辑回显图片删除

const handleRemoves = (file, name) => {
        console.log(file);
        //获取被删除图片路径和uid
        let arr = fileLists;
        //筛选图片路径数组中相同uid的元素获取其下标
        let index = arr[name].findIndex((val) => {
            return val.uid == file.uid
        })
        //删除对应下标元素
        arr[name].splice(index, 1)
        console.log(arr);
        //更新数组
        setFileLists([...arr])
        return false;
    }

这样可以根据uid删除对应的图片路径,不会和.filter删除一样因为路径相同而多删除图片

相关文章
|
6月前
|
API
【sgUpload】自定义组件:自定义上传组件,支持上传文件夹及其子文件夹文件、批量上传,批量上传会有右下角上传托盘出现,支持本地上传图片转换为Base64image。
【sgUpload】自定义组件:自定义上传组件,支持上传文件夹及其子文件夹文件、批量上传,批量上传会有右下角上传托盘出现,支持本地上传图片转换为Base64image。
|
前端开发 JavaScript
使用Element-UI中的el-upload实现文件的上传demo(亲测有用)
使用Element-UI中的el-upload实现文件的上传demo(亲测有用)
|
4月前
|
Java
软件开发常用之SpringBoot文件下载接口编写(下),Vue+SpringBoot文件上传下载预览,服务器默认上传是1M,可以调节,调节文件上传大小写法,图片预览,如何预览后下次还能看到,预览写法
软件开发常用之SpringBoot文件下载接口编写(下),Vue+SpringBoot文件上传下载预览,服务器默认上传是1M,可以调节,调节文件上传大小写法,图片预览,如何预览后下次还能看到,预览写法
|
前端开发
ant design一个页面(新增编辑)
ant design一个页面(新增编辑)
67 0
|
6月前
|
前端开发
elementui-upload组件自定义样式上传(upload中常用的属性,但是网络上却找不到教程)(解决bug删除之后再次上传会上传删除的图片)专注后端工程师的前端速成
elementui-upload组件自定义样式上传(upload中常用的属性,但是网络上却找不到教程)(解决bug删除之后再次上传会上传删除的图片)专注后端工程师的前端速成
697 0
|
6月前
|
存储
ant-design Upload上传组件使用 action上传
ant-design Upload上传组件使用 action上传
323 0
|
6月前
|
前端开发 JavaScript
前端用原生js编辑文件内容→创建生成文件(格式可以自定义)→下载文件
前端用原生js编辑文件内容→创建生成文件(格式可以自定义)→下载文件
|
6月前
|
Java 应用服务中间件 Android开发
UEditor自定义图片/文件上传路径与回显
UEditor自定义图片/文件上传路径与回显
538 0
Ant Design 中表单内容如何设置,更改,回显功能写法
Ant Design 中表单内容如何设置,更改,回显功能写法
237 0
ant-design:Upload组件上传图片组件封装
ant-design:Upload组件上传图片组件封装
396 0