vue關于下載文件常用的幾種方式
vue下載文件常用方式
直接打開
直接打開是指我們直接使用window.open(URL)的方法
- 優(yōu)點:簡單操作
- 缺點:沒辦法攜帶token
我們可以自己封裝一個方法
比如如下:
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)
? ? //點擊下載
? ? downloadElement.click()
? ? //下載完成移除元素
? ? document.body.removeChild(downloadElement)
? ? if (revokeObjectURL == null || revokeObjectURL) {
? ? ? ? //釋放掉blob對象
? ? ? ? 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
}然后在我們調用的那個頁面中直接引入使用就好啦
//先引用
import ajax from '../../utils/ajax.js'
//使用
ajax.downloadFile('URL',null,{下載的文件名稱})這樣看是不是就挺容易的
vue常用的命令
創(chuàng)建vue項目常用命令
如果vue項目出錯了你可以把依賴刪掉,清理一下緩存在重新安裝
清理緩存 npm cache clean --force
第一步,創(chuàng)建淘寶鏡像,安裝npm鏡像(如果已經安裝的就直接第二步就可以了)
npm install -g cnpm --registry=https://registry.npm.taobao.org
第二步, 全局安裝vue-vli
npm install --g vue-cli
第三步, 創(chuàng)建一個vue項目
vue init webpack 項目名
vue項目部署
npm install
啟動項目
npm run dev/npm run serve
1、安裝element_ui
npm i element-ui -S
安裝成功后在main.js中到導入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中應用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)
總結
1.安裝vue-cli
npm install --global vue-cli
2.創(chuàng)建一個基于 webpack 模板的新項目
vue init webpack 項目名稱
3.運行:npm run dev
4.安裝依賴:cd 項目名稱 npm install
5.安裝vue-resource插件(通過XMLHttpRequest或JSONP發(fā)起請求并處理響應 //get post請求):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)正在運行的命令,則ctrl +c
11.安裝指定版本jquery
npm i jquery@版本號
12.若項目中node_modules文件被刪除,使用 npm install 即能把package.json中的dependencies中所有依賴項都下載回來
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Vuex 在Vue 組件中獲得Vuex 狀態(tài)state的方法
今天小編就為大家分享一篇Vuex 在Vue 組件中獲得Vuex 狀態(tài)state的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
詳解關于表格合并span-method方法的補充(表格數(shù)據由后臺動態(tài)返回)
這篇文章主要介紹了詳解關于表格合并span-method方法的補充(表格數(shù)據由后臺動態(tài)返回) ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05
vue監(jiān)聽路由變化時watch方法會執(zhí)行多次的原因及解決
這篇文章主要介紹了vue監(jiān)聽路由變化時watch方法會執(zhí)行多次的原因及解決,幫助大家更好的理解和學習使用vue框架,感興趣的朋友可以了解下2021-04-04
vue中el-table實現(xiàn)無限向下滾動懶加載數(shù)據
一次性的加載全部的數(shù)據,并且將其渲染到頁面上,就會導致頁面卡頓,往往采用分頁和無限滾動的方式來展示,本文主要介紹了vue中el-table實現(xiàn)無限向下滾動懶加載數(shù)據,感興趣的可以了解一下2023-12-12

