js上传下载函数封装

编程入门 行业动态 更新时间:2024-10-22 23:09:07

js<a href=https://www.elefans.com/category/jswz/34/1760739.html style=上传下载函数封装"/>

js上传下载函数封装

上传函数封装

 const addSubmit = (val) => {if (val.length < 1) {messageTitle('上传文件不能为空', 'warning') // messageTitle是我封装的elmentui的message组件,可根据自己的代码调整} else {const formData = new FormData()formData.append('multipartFile', val[0].raw)account.createAccount(formData).then(res => {const reader = new FileReader();reader.onload = event => {try {// 将读取的string转换为json// 若果能转换成功 => 接口返回的是json数据,提示报错信息const json = JSON.parse(event.target.result);if (json.code === SUCCESSCODE) {messageTitle('上传成功', 'success')} else {messageTitle(json.message, 'error')}} catch (err) {messageTitle('上传失败', 'error')// 不能被转换成json => 接口返回的是blob, 下载blob文件const blob = new Blob([res], { type: 'application/vnd.ms-excel' })const fileName = '失败文件下载'const url = window.URL.createObjectURL(blob)const link = document.createElement('a')link.style.display = 'none'link.href = urllink.setAttribute('download', fileName)document.body.appendChild(link)link.click()document.body.removeChild(link) // 点击后移除,防止生成很多个隐藏a标签}};reader.readAsText(res);})}}

下载函数封装


function download(data) {const param = {uuid: data.split('@')[0],fileName: data.split('@')[1]}axios({method: 'post',url,data: param,responseType: 'blob',headers: {'Content-Type': 'application/json;charset=UTF-8',}}).then(res => {if (res.data.type == 'application/json') {handlerResponseError(res.data)} else {const disposition = res.headers['content-disposition']if (disposition == undefined) {return MessageBox.alert('下载失败', '失败', { type: 'error' });}let fileName = disposition && disposition.substring(disposition.indexOf("''") + 2, disposition.length)fileName = decodeURI(fileName)// 开始处理文件下载 - resList.data为文件流const blobUrl = window.URL.createObjectURL(new Blob([res.data], {type: res.headers['content-type']}))const link = document.createElement('a')link.style.display = 'none'link.href = blobUrl// fileName 文件的名称link.setAttribute('download', fileName)document.body.appendChild(link)link.click()document.body.removeChild(link)}}).catch(_ => MessageBox.alert('网络请求失败', '失败', { type: 'error' }))
}function handlerResponseError(data) {const fileReader = new FileReader()fileReader.onload = function () {try {const { res_code, status } = JSON.parse(fileReader.result) // 说明是普通对象数据,后台转换失if (status == '000_000_0002') {return MessageBox.alert('下载失败', '失败', { type: 'error' });}} catch (err) {// 解析成对象失败,说明是正常的文件流console.log('success...')}}fileReader.readAsText(data)
}

更多推荐

js上传下载函数封装

本文发布于:2023-11-15 20:34:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1605933.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:上传下载   函数   js

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!