一,下载文件
1,接收后端传的流文件。
// 下载模板get请求
async download () {
const res = await this.$http.get(URL, { responseType: 'blob' })
this.downloads(res.data)
},
downloads (data) {
if (!data) {
this.$message.error('下载失败')
return
}
const url = window.URL.createObjectURL(new Blob([data]))
const aLink = document.createElement('a')
aLink.style.display = 'none'
aLink.href = url
aLink.setAttribute('download', '模板.xlsx')
document.body.appendChild(aLink)
aLink.click()
document.body.removeChild(aLink)
window.URL.revokeObjectURL(url)
}
// 下载模板post请求
async download () {
const res = await this.$http.post(URL, {}, { responseType: 'blob' })
console.log(res)
this.downloads(res.data)
},
downloads (data) {
if (!data) {
this.$message.error('下载失败')
return
}
const url = window.URL.createObjectURL(new Blob([data]))
const aLink = document.createElement('a')
aLink.style.display = 'none'
aLink.href = url
aLink.setAttribute('download', '模板.xlsx')
document.body.appendChild(aLink)
aLink.click()
document.body.removeChild(aLink)
window.URL.revokeObjectURL(url)
}
这里需要注意的是,在用post请求的三个参数分别是请求URL,请求体,第三个参数才能设置返回响应数据的类型,而get请求直接在请求URL后面加上返回响应数据的类型即可。
2,使用js-file-downliad
安装
npm install js-file-download --save
使用
import fileDownload from 'js-file-download'
this,$http.post(URL,{}, {responseType: 'blob'}).then(res => {
fileDownload(res.data, '模板.xls')
})
2,通过URL下载
后端提供文件的地址,直接使用浏览器下载
window.location.href = 文件路径
二,上传文件
使用element UI的el-upload组件
<el-upload
action=" "
:before-upload = beforeUpload
:http-request = httprequest
:show-file-list = 'false'>
<el-button type="primary">导入</el-button>
<div slot="tip">只能上传xls/xlsx文件</div>
</el-upload>
// 上传文件
beforeUpload (file) {
var FileExt = file.name.replace(/.+\./, '')
if (['xls', 'xlsx'].indexOf(FileExt.toLowerCase()) === -1) {
this.$message({
type: 'warning',
message: '请上传后缀为xls/xlsx的文件'
})
return false
}
},
async httprequest (param) {
this.loading = true
var filelist = new FormData()
filelist.append('file', param.file)
const res = await this.$http.post(URL, filelist, { headers: { 'Content-Type': 'multipart/form-data' } })
console.log(res)
if (res.data.succeed) {
this.getualist()
return this.$message.success('上传成功!')
} else {
this.getualist()
return this.$message.error(res.msg)
}
}
