vue關(guān)于下載文件常用的幾種方式
vue下載文件常用方式
直接打開
直接打開是指我們直接使用window.open(URL)的方法
- 優(yōu)點(diǎn):簡(jiǎn)單操作
- 缺點(diǎn):沒辦法攜帶token
我們可以自己封裝一個(gè)方法
比如如下:
import axios from "axios" import * as auth from '@/utils/auth.js' let ajax = axios.create({ ? ? baseURL: process.env.VUE_APP_BASE_API, ? ? timeout: 100000 }); ajax.interceptors.request.use(config => { ? ? ? ? config.headers = { ? ? ? ? ? ? Authorization: auth.getToken(), ? ? ? ? ? ? // OrgId: auth.getUser().orgId, ? ? ? ? ? ? // UserId: auth.getUser().id, ? ? ? ? } ? ? ? ? return config ? ? }, ? ? err => { ? ? ? ? return Promise.reject(err) ? ? }) let downloadFile = async (url, formData, options) => { ? ? await ajax.post(url, formData, {responseType: 'arraybuffer'}).then(resp => download(resp, options)) } let getFile = async (url, options) => { ? ? await ajax.get(url, {responseType: 'blob'}).then(resp => download(resp, options)) } let download = (resp, options) => { ? ? let blob = new Blob([resp.data], {type: options.fileType ? options.fileType : 'application/octet-binary'}) ? ? //創(chuàng)建下載的鏈接 ? ? let href = window.URL.createObjectURL(blob) ? ? downloadBlob(href, options.fileName) } let downloadBlob = (blobUrl, fileName, revokeObjectURL) => { ? ? let downloadElement = document.createElement('a') ? ? downloadElement.href = blobUrl ? ? //下載后文件名 ? ? downloadElement.download = fileName ? ? document.body.appendChild(downloadElement) ? ? //點(diǎn)擊下載 ? ? downloadElement.click() ? ? //下載完成移除元素 ? ? document.body.removeChild(downloadElement) ? ? if (revokeObjectURL == null || revokeObjectURL) { ? ? ? ? //釋放掉blob對(duì)象 ? ? ? ? window.URL.revokeObjectURL(blobUrl) ? ? } } let getDownloadFileUrl = async (url, fileType) => { ? ? let blob ? ? await ajax.get(url, {responseType: 'blob'}).then(resp => { ? ? ? ? blob = new Blob([resp.data], {type: fileType ? fileType : 'application/octet-binary'}); ? ? }) ? ? return window.URL.createObjectURL(blob); } let getDownloadFileUrlByPost = async (url, data, fileType) => { ? ? let blob ? ? await ajax.post(url, data, {responseType: 'blob'}).then(resp => { ? ? ? ? blob = new Blob([resp.data], {type: fileType ? fileType : 'application/octet-binary'}); ? ? }) ? ? return window.URL.createObjectURL(blob); } let getDownloadFileBlob = async (url, fileType) => { ? ? let blob ? ? await ajax.get(url, {responseType: 'blob'}).then(resp => { ? ? ? ? blob = new Blob([resp.data], {type: fileType ? fileType : 'application/octet-binary'}); ? ? }) ? ? return blob; } export default { ? ? ajax, ? ? downloadFile, ? ? getFile, ? ? getDownloadFileUrl, ? ? getDownloadFileUrlByPost, ? ? getDownloadFileBlob, ? ? downloadBlob }
然后在我們調(diào)用的那個(gè)頁面中直接引入使用就好啦
//先引用 import ajax from '../../utils/ajax.js' //使用 ajax.downloadFile('URL',null,{下載的文件名稱})
這樣看是不是就挺容易的
vue常用的命令
創(chuàng)建vue項(xiàng)目常用命令
如果vue項(xiàng)目出錯(cuò)了你可以把依賴刪掉,清理一下緩存在重新安裝
清理緩存 npm cache clean --force
第一步,創(chuàng)建淘寶鏡像,安裝npm鏡像(如果已經(jīng)安裝的就直接第二步就可以了)
npm install -g cnpm --registry=https://registry.npm.taobao.org
第二步, 全局安裝vue-vli
npm install --g vue-cli
第三步, 創(chuàng)建一個(gè)vue項(xiàng)目
vue init webpack 項(xiàng)目名
vue項(xiàng)目部署
npm install
啟動(dòng)項(xiàng)目
npm run dev/npm run serve
1、安裝element_ui
npm i element-ui -S
安裝成功后在main.js中到導(dǎo)入element-ui,并使用
? ? import ElementUI from 'element-ui'; ? ? import 'element-ui/lib/theme-chalk/index.css'; ? ? Vue.use(ElementUI);
2、安裝vue_router
npm install vue-router --save?
安裝完成如果沒有文件夾router(一般都有vue2.0下需要自己選擇安裝,vue3.0創(chuàng)建有)我們直接創(chuàng)建index.js文件。文件放入以下配置
import Vue from 'vue' import VueRouter from 'vue-router'; Vue.use(VueRouter);? import XXX "../src/components/xxx"; ?? const routes = [ ? { ? ? path:'/' ? ? component: XXX ? },? ] ? const router = new VueRouter({ ? routes }) ? export default router
要在main.js中應(yīng)用router.js文件。我們需要在中放入router
import router from "../router"; ?? ? new Vue({ ? router, ? el: '#app', ? components: { App }, ? template: '<App/>' })
3、 安裝axios組件,安裝命令如下:
npm install --save vue-axios ?
在main.js文件下引入如下代碼:
import axios from 'axios' import VueAxios from 'vue-axios' Vue.use(VueAxios, axios)
總結(jié)
1.安裝vue-cli
npm install --global vue-cli
2.創(chuàng)建一個(gè)基于 webpack 模板的新項(xiàng)目
vue init webpack 項(xiàng)目名稱
3.運(yùn)行:npm run dev
4.安裝依賴:cd 項(xiàng)目名稱 npm install
5.安裝vue-resource插件(通過XMLHttpRequest或JSONP發(fā)起請(qǐng)求并處理響應(yīng) //get post請(qǐng)求):npm install vue-resource --save
6.安裝路由插件:
npm install vue-router --save
7.安裝element-ui:
npm i element-ui -S(安裝好之后要記得在main.js中引入)
8.安裝axios npm install axios --save
9.安裝Echarts npm install echarts --save
10.如果想要終止終端(cmd)正在運(yùn)行的命令,則ctrl +c
11.安裝指定版本jquery
npm i jquery@版本號(hào)
12.若項(xiàng)目中node_modules文件被刪除,使用 npm install 即能把package.json中的dependencies中所有依賴項(xiàng)都下載回來
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vuex 在Vue 組件中獲得Vuex 狀態(tài)state的方法
今天小編就為大家分享一篇Vuex 在Vue 組件中獲得Vuex 狀態(tài)state的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08vue2/vue3路由權(quán)限管理的方法實(shí)例
最近用vue框架做了個(gè)后臺(tái)管理項(xiàng)目,涉及權(quán)限,所以下面這篇文章主要給大家介紹了關(guān)于vue2/vue3路由權(quán)限管理的相關(guān)資料,需要的朋友可以參考下2021-06-06詳解關(guān)于表格合并span-method方法的補(bǔ)充(表格數(shù)據(jù)由后臺(tái)動(dòng)態(tài)返回)
這篇文章主要介紹了詳解關(guān)于表格合并span-method方法的補(bǔ)充(表格數(shù)據(jù)由后臺(tái)動(dòng)態(tài)返回) ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05vue監(jiān)聽路由變化時(shí)watch方法會(huì)執(zhí)行多次的原因及解決
這篇文章主要介紹了vue監(jiān)聽路由變化時(shí)watch方法會(huì)執(zhí)行多次的原因及解決,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下2021-04-04vue中el-table實(shí)現(xiàn)無限向下滾動(dòng)懶加載數(shù)據(jù)
一次性的加載全部的數(shù)據(jù),并且將其渲染到頁面上,就會(huì)導(dǎo)致頁面卡頓,往往采用分頁和無限滾動(dòng)的方式來展示,本文主要介紹了vue中el-table實(shí)現(xiàn)無限向下滾動(dòng)懶加載數(shù)據(jù),感興趣的可以了解一下2023-12-12vue 修改 data 數(shù)據(jù)問題并實(shí)時(shí)顯示操作
這篇文章主要介紹了vue 修改 data 數(shù)據(jù)問題并實(shí)時(shí)顯示操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09