前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >react-开发经验分享-Upload上传功能的具体项目实现

react-开发经验分享-Upload上传功能的具体项目实现

作者头像
Mr. 柳上原
发布于 2019-05-17 04:12:42
发布于 2019-05-17 04:12:42
1.9K00
代码可运行
举报
运行总次数:0
代码可运行

Author:Mr.柳上原

  • 付出不亚于任何的努力
  • 愿我们所有的努力,都不会被生活辜负
  • 不忘初心,方得始终

ant框架里,Upload上传文件组件的具体使用方法 antd的Upload组件可谓很强大了, 自带各种上传api action接口地址,accept类型控制,directory文件夹上传,beforeUpload上传钩子...... 一般能满足普通小项目的上传需求 不过不同的公司总会有很多不同的需求, 所以Upload提供了一个customRequest方法来做特殊上传需求,覆盖自身原本的上传逻辑, 比如,断点续传,接口检测,自研发桌面上传工具接入等等 customRequest的具体使用方法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 自定义上传方法
    photoRequest = async (file) => {
        const _this = this
        let uploadUrl = `${UploadUrl}/file/upload/${file.uid}`

        const photoRequest = new Promise((resolve, reject) => {
            let formData = new FormData()

            formData.append("fileGuid", file.uid)
            formData.append("name", file.name)
            formData.append("file", file)

            let xhr = new XMLHttpRequest()

            xhr.open('POST', uploadUrl, true)
            xhr.send(formData)

            xhr.onload = function (e) {
                if (this.status === 200) {
                    let res = JSON.parse(this.response)

                    console.log(res, 'res')

                    if (res.code === "0") {
                        let { fileList } = _this.state
                        let newFileList = fileList.concat()

                        let photoData = {
                            from: 'pc-upload',
                            WXPath: res.path,
                            localUrl: res.url,
                            deviceName: res.deviceName,
                            fileExt: res.ext,
                            uri: res.path,
                            url: `${UploadUrl}${res.url}`,
                            type: 'ORIGINAL',
                            name: file.name,
                            uid: file.uid
                        }

                        newFileList.push(photoData)

                        _this.setState({
                            fileList: newFileList
                        })

                        resolve({ code: '0', message: '上传成功' })
                    } else {
                        message.error({
                            message: '上传失败:',
                            duration: 3
                        })

                        resolve({ code: '1', message: '上传失败' })
                    }
                } else {
                    message.error({
                        message: '上传失败!',
                        duration: 3
                    })

                    resolve({ code: '1', message: '上传失败' })
                }
            }

            xhr.onerror = function (e) {
                message.error({
                    message: '上传失败!',
                    duration: 3
                })

                resolve({ code: '1', message: '上传失败' })
            }

            xhr.onabort = function () {
                message.error({
                    message: '上传异常终止!',
                    duration: 3
                })

                resolve({ code: '1', message: '上传异常终止' })
            }
        })

        return photoRequest
    }
}

需要注意的是,一般使用自定义上传方法后,删除图片的时候,都会出现一个报错

reqs[uid].abort is not a function

这是因为Promise是没有abort 方法的,只有原生js的XMLHttpRequest对象才具有abort

解决办法为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 简单粗暴的强行写入
const P = new Promise((resolve, reject) => {})
P.abort = () => {}

abort的具体使用方法,可以参考CSDN的Promise使用指南,或者菜鸟教程runoob,或者MDN的Java​Script专栏,或者,以下...

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//通过cancelableXHR 方法取得包装了XHR的promise对象和取消该XHR请求的方法
//
function cancelableXHR(url){
    var req=new XMLHttpRequest();
    var promise=new Promise(function(resolve,reject){
        req.open('GET',url,true);
        req.onload=function(){
            if (req.status===200) {
                resolve(req.responseText);
            }else{
                reject(new Error(req.statusText))
            }
        }
        req.onerror=function(){
            reject(new Error(req.responseText))
        }
        req.onabort=function(){
            reject(new Error('abort this request'))
        }
        res.send();
    })
    var abort=function(){
        if (req.readyState!==XMLHttpRequest.UNSENT) {
            req.abort();
        }
    }

    return {
        promise:promise,
        abort:abort
    }
}

var object=cancelableXHR('http://www.sqqs.com/index')

timeoutPromise(object.promise,1000).then(function(content){
    console.log(`content:${content}`);
}).catch(function(error){
    if (error instanceof TimeoutError) {
        object.abort();
        return console.log(error)
    }
    console.log(`XHR Error:${error}`);
})
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.05.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
工业互联网平台架构方案,构建工业互联网企业数字化、网络化、智能化服务体系
工业互联网平台基于ICT技术打造的开放式平台,聚焦“联接+云”,提供智能化的边缘层、泛在网络、可信IaaS、工业PaaS,及汇聚生态伙伴的工业SaaS, 助力制造企业数字化转型。工业互联网平台面向制造业数字化、网络化、智能化需求,基于海量数据构建采集、汇聚、分析的服务体系,能够支撑工业互联网企业制造资源泛在连接、弹性供给、高效配置,有效助力制造企业提高产品质量、生产效率和服务水平,同时降低成本,以工业互联网企业平台为核心的融合生态之争是全球制造业竞争的热点。
数商云
2019/11/20
3.6K0
工业互联网平台架构方案,构建工业互联网企业数字化、网络化、智能化服务体系
制造业的福音——工业互联网平台
人类发展的历史就是科技进步的历史。2020年国家发改委首次明确“新基建”范围,工业互联网被定义为基于新一代信息技术演化成的通信网络基础设施。工业互联网是被视作为以“智能+”为代表的新经济“基石”,是新基建的核心要素,是新旧动能转换的主引擎,是中国经济向高质量发展转型的关键!正是这样,国内越来越多的企业创建了工业互联网平台。
yansunxer
2021/07/21
8060
制造业的福音——工业互联网平台
26个最经典的工业互联网+人工智能案例
本文精选26个经典的工业互联网+人工智能案例,涉及的企业是业界主流一线企业,供大家参考学习。、
辉哥
2018/08/10
22.6K0
26个最经典的工业互联网+人工智能案例
工业互联网发展现状
根据工信部发布的数据指出,截至今年8月底,企业数字化研发设计工具普及率、关键工序数控化率分别达74.7%和54.2%,具有一定行业和区域影响力的工业互联网平台超过100家,连接工业设备总数达到7600万台(套)。
yansunxer
2021/11/08
1.1K0
工业互联网发展现状
智能制造转型与工业互联网建设
提到智能制造转型,我估计大家已经被这些类似的这个概念可能轰炸的时间已经是比较久了。信息化、数字化、智能化、两化融合、工业4.0、智能工厂、工业互联网、数字化转型,智能制造转型。如果您上网搜一下,会发现这些概念基本上都不止一个定义。而且哪个概念火,哪个概念就是有筐,什么都往里装, 装到最后发现说的事都差不多。
云大学小编
2020/06/05
9330
智能制造转型与工业互联网建设
说不清道不明的工业互联网
随着全球范围内新一轮科技革命和产业变革的蓬勃兴起,以人工智能、大数据技术和物联网等新一代信息技术为标志的新产业革命正在改变传统制造业的运营模式和知识技术创新方式,新一代信息技术与制造业的深度融合,推动了工业互联网平台在全球范围内蓬勃兴起,已形成数字技术驱动的价值创造新生态,并有望对生产组织方式和商业模式带来深远的影响。
yansunxer
2021/09/14
2810
说不清道不明的工业互联网
小程序技术成为打造工业互联网平台生态的必备神器
目前,我国工业互联网发展迅猛,从国家层面、部委层面、地方层面都在积极推动,国际上对工业互联网发展也比较关注。
二山山记
2022/09/22
5170
小程序技术成为打造工业互联网平台生态的必备神器
“5g+工业互联网”,工业生产制造迎来新突破
近年来,5G、工业互联网、人工智能等字眼在我们的生活中的展现越来越多,它不仅代表我国互联网的高速发展的成果,也预示了互联网发展目标由消费领域向工业生产领域的转变。在工信部发布第二批“5G+工业互联网”10个典型应用场景和5个重点行业实践之后,5G+工业互联网掀起了一番热潮。
yansunxer
2021/12/01
2550
“5g+工业互联网”,工业生产制造迎来新突破
90%的工厂没有数字化,工业互联网路在何方?
建国以来的70年,我国工业增加值增长超970倍,形成了独立完整的现代工业体系,是全世界唯一拥有联合国产业分类中所列全部工业门类的国家,用几十年时间走过了发达国家几百年的工业化历程。也因此,中国以“世界工厂”闻名于世界,中国制造就是物美价廉的代表。
TVP官方团队
2020/06/17
1.3K0
90%的工厂没有数字化,工业互联网路在何方?
如何发展好工业互联网平台?
工业互联网这张大网如今已经覆盖了大半个制造业了,它以智能技术为主要支撑,通过打通设计、生产、流通、消费与服务环节,构建基于云平台的海量数据采集、汇聚、分析服务体系,支撑制造资源的泛在连接、弹性供给和高效配置,赋能产业升级和经济高质量发展。
yansunxer
2021/11/17
1.3K0
如何发展好工业互联网平台?
工业互联网平台激发经济高质量发展新动能
工业互联网平台是面向制造业数字化、网络化、智能化需求,构建基于海量数据采集、汇聚、分析的服务体系,支撑制造资源泛在连接、弹性供给、高效配置的工业云平台。它也是伴随新工业革命和平台经济的演进而兴起的新事物,是平台经济在工业领域的创造性应用,是由数字技术驱动的工业生产组织方式创新和变革。
yansunxer
2021/12/03
4120
工业互联网平台激发经济高质量发展新动能
一文读懂我国工业互联网的4类应用
工业互联网有狭义和广义之分,狭义上的工业互联网由GE率先提出,主要面向智能制造,基于大数据技术,提升工业生产的效率、质量以及降低成本;广义上的工业互联网则是工业化和信息化的融合,不仅仅是面向制造业,也不仅仅针对生成过程,还面向工业企业运营、产业协同等。在我国,工业互联网一般是广义上的。无论狭义还是广义,都是为了提高工业产品质量、生产效率、服务水平、降低成本,均要求实现OT与ICT技术融合。根据中国通信标准化协会CCSA相关标准研究与分类,我国的工业互联网包括智能化生产、个性化定制、网络化协同和服务化延伸4类主要应用。
yansunxer
2022/08/26
1.4K0
一文读懂我国工业互联网的4类应用
使用小程序容器技术,使工业互联网平台建设加速
随着我国新一代信息技术与制造技术的深度融合,在工业数字化、网络化、智能化转型需求的带动下,以泛在互联、全面感知、智能优化、和安全稳固为特征的工业互联网应运而生。
pak
2022/09/21
4020
打造工业互联网平台为传统制造企业转型升级赋能
2022年3月,全国人民代表大会所作的政府工作报告中指出要促进传统产业升级。打造工业互联网平台,拓展“智能+”,为传统制造企业转型升级赋能。加快建设制造强国,强化工业基础和技术创新能力,壮大数字经济,促进先进制造业和现代服务业融合发展,加快在各行业各领域推进“互联网+”。
yansunxer
2022/06/08
5050
打造工业互联网平台为传统制造企业转型升级赋能
2021数博会现场直击丨工业互联网如何驱动产业数字化转型?
工业互联网作为数字化转型的关键支撑力量,对塑造我国制造业竞争新优势、加速产业高端发展、培育形成新的经济增长点等,都具有重要促进作用。
科技云报道
2022/04/16
2700
2021数博会现场直击丨工业互联网如何驱动产业数字化转型?
工业互联网的现状、发展与未来(中国工业互联网研究报告)
面对不断提升的成本、运营压力,以及回报率走低的趋势,老牌工业企业“通用电气”在2012年提出了“工业互联网(Industrial Internet)”的概念,随后美国五家行业龙头企业联手组建了工业互联网联盟(IIC),将这一概念推广开来。之后,除了像GE这样的制造业巨头,IBM、思科、英特尔和AT&T等IT企业也加入了该联盟。
庞九公子
2020/06/02
31K4
工业互联网的现状、发展与未来(中国工业互联网研究报告)
幸运的浪潮云,和它的工业互联网
在由玻璃屏障围成的矩形空间里,一只高大的黄色机械手臂上下翻飞,只需要8分钟,这个智能锁附机器人就可以自动锁完130颗螺丝,这是人工1小时的工作量。
IT创事记
2022/06/24
4420
幸运的浪潮云,和它的工业互联网
工业互联网是啥?工业互联网平台又是啥?
“叮...”正在吃午饭的张师傅突然收到一条短信,短信内容为他所管理的众多电机中的一台出现了故障,他迅速地打开手机APP查看电机的具体运行情况,发现是电机振动幅度过大,超出了设定的常规值,张师傅立马通知值班人员进行检查,发现轴与轴瓦间间隙过大,造成振动原因,值班人员立马记录,通知维修人员更换磨损严重的轴瓦。
yansunxer
2021/11/03
1.8K0
工业互联网是啥?工业互联网平台又是啥?
工业互联网的困境
工业互联网是国家推动制造业转型升级的抓手,是“十四五”规划数字经济重点产业之一。各级政府积极通过政策引导、资金支持、试点示范等方式加快工业互联网培育,工业互联网产业经济规模快速增长,它既是工业数字化、网络化、智能化转型的基础设施,也是互联网、大数据、人工智能与实体经济深度融合的应用模式,同时也是一种新业态、新产业,将重塑企业形态、供应链和产业链。
存储小白
2022/03/31
5390
《2020工业互联网产业经济发展报告》10大要点总结
近日,中国信息通信研究院发布《工业互联网产业经济发展报告2020》,在界定工业互联网产业体系、产业范围和边界的基础上,综合运用多种计量经济方法构建核算框架,对我国工业互联网的经济社会影响进行了定量化研究。
晓吾
2020/04/08
7120
《2020工业互联网产业经济发展报告》10大要点总结
推荐阅读
相关推荐
工业互联网平台架构方案,构建工业互联网企业数字化、网络化、智能化服务体系
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验