成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

.netcore+vue 實(shí)現(xiàn)壓縮文件下載功能

瀏覽:5日期:2022-11-18 16:04:07

一.前言

目前接觸的項(xiàng)目中,給定的需求是將系統(tǒng)內(nèi)所有用戶的數(shù)據(jù)整理好,并保存到文件夾內(nèi),目的主要是防止用戶在實(shí)施人員已配置好的基礎(chǔ)上由于不熟悉系統(tǒng),導(dǎo)致的誤刪或者誤操作。減少實(shí)施人員的配置工作。我首先想到的就是將數(shù)據(jù)導(dǎo)入到Excel中,并以各個(gè)用戶的名稱命名文件夾做好分類。

vue下實(shí)現(xiàn)Excel導(dǎo)入這個(gè)我們見的比較多了,當(dāng)時(shí)我也確實(shí)實(shí)現(xiàn)了下載Excel的功能,但是后續(xù)發(fā)現(xiàn)保存的文件都在服務(wù)器上,那就有一個(gè)問題了,實(shí)施人員是通過頁(yè)面點(diǎn)擊的一鍵保存按鈕,數(shù)據(jù)也確實(shí)保存了,但是卻是在服務(wù)器上,如果想實(shí)時(shí)看到數(shù)據(jù)呢,是不是還要去服務(wù)器上拷貝一份下來。相對(duì)來講確實(shí)比較繁瑣,所以整理了下載壓縮文件到本地的功能,一起看一下怎么實(shí)現(xiàn)的吧。

1.1.net core 壓縮文件

思路是在后臺(tái)將文件夾整體壓縮為zip格式的壓縮包,并返回文件流到前端,然后前端接收文件流實(shí)現(xiàn)瀏覽器下載的功能。

后端代碼,將

public async Task<FileStreamResult> DownloadFiles(DownLoadModel input) { if (!Directory.Exists(input.pathUrl)) {throw new UserFriendlyException('當(dāng)前要下載的文件夾不存在或已刪除'); } var zipFileUrl = _configurationRoot['downLoadUrlConf:downloadZipFileUrl']; if (File.Exists(zipFileUrl)) {File.Delete(zipFileUrl); } ZipHelper.CreateZip(input.pathUrl, zipFileUrl); var memoryStream = new MemoryStream(); using (var stream = new FileStream(zipFileUrl, FileMode.Open)) {await stream.CopyToAsync(memoryStream); } memoryStream.Seek(0, SeekOrigin.Begin); return new FileStreamResult(memoryStream, 'application/octet-stream');//文件流方式,指定文件流對(duì)應(yīng)的ContenType。 }

public static class ZipHelper { /// <summary> /// 壓縮文件 /// </summary> /// <param name='sourceFilePath'></param> /// <param name='destinationZipFilePath'></param> public static void CreateZip(string sourceFilePath, string destinationZipFilePath) { if (sourceFilePath[sourceFilePath.Length - 1] != System.IO.Path.DirectorySeparatorChar)sourceFilePath += System.IO.Path.DirectorySeparatorChar; ZipOutputStream zipStream = new ZipOutputStream(File.Create(destinationZipFilePath)); zipStream.SetLevel(6); // 壓縮級(jí)別 0-9 CreateZipFiles(sourceFilePath, zipStream, sourceFilePath); zipStream.Finish(); zipStream.Close(); } /// <summary> /// 遞歸壓縮文件 /// </summary> /// <param name='sourceFilePath'>待壓縮的文件或文件夾路徑</param> /// <param name='zipStream'> /// <param name='staticFile'></param> private static void CreateZipFiles(string sourceFilePath, ZipOutputStream zipStream, string staticFile) { Crc32 crc = new Crc32(); string[] filesArray = Directory.GetFileSystemEntries(sourceFilePath); foreach (string file in filesArray) {if (Directory.Exists(file)) //如果當(dāng)前是文件夾,遞歸{ CreateZipFiles(file, zipStream, staticFile);}else //如果是文件,開始?jí)嚎s{ FileStream fileStream = File.OpenRead(file); byte[] buffer = new byte[fileStream.Length]; fileStream.Read(buffer, 0, buffer.Length); string tempFile = file.Substring(staticFile.LastIndexOf('') + 1); ZipEntry entry = new ZipEntry(tempFile); entry.DateTime = DateTime.Now; entry.Size = fileStream.Length; fileStream.Close(); crc.Reset(); crc.Update(buffer); entry.Crc = crc.Value; zipStream.PutNextEntry(entry); zipStream.Write(buffer, 0, buffer.Length);} } } }

其中CreateZip方法傳入一個(gè)源文件的路徑,一個(gè)目標(biāo)文件的路徑,這里我的目標(biāo)文件設(shè)置在appsetting.json里是個(gè)臨時(shí)路徑,只為前端當(dāng)次下載使用。這樣我們就在后臺(tái)將數(shù)據(jù)以壓縮包的形式壓縮好,并返回?cái)?shù)據(jù)流給前端了。

1.2 vue 下載壓縮文件

<el-button icon='el-icon-download' size='mini' type='primary' @click='downloadFile' >下載文件到本地</el-button>

downloadFile() { this.loading = true; let postData = { pathUrl: this.filePathMag }; AjaxHelper.post(this.downLoadUrl, postData, { responseType: 'blob', }).then((res) => { // 處理返回的文件流 const content = res.data; const blob = new Blob([content], { type: 'application/zip' }); const fileName = this.tenant.name + '配置信息.zip'; if ('download' in document.createElement('a')) { // 非IE下載 const elink = document.createElement('a'); elink.download = fileName; elink.style.display = 'none'; elink.href = URL.createObjectURL(blob); document.body.appendChild(elink); elink.click(); URL.revokeObjectURL(elink.href); // 釋放URL 對(duì)象 document.body.removeChild(elink); } else { // IE10+下載 navigator.msSaveBlob(blob, fileName); } this.loading = false; }); },

之前下載Excel時(shí),我們傳入后端的content-type為'application/json;application/octet-stream',經(jīng)過測(cè)試發(fā)現(xiàn)壓縮文件不能使用這種content-type,所以我們?nèi)サ袅恕A硗饩褪莄onst blob = new Blob([content], { type: 'application/zip' });這行代碼,如果不加,雖然也能下載,但是下載后的壓縮包卻無法打開,提示壓縮不正確或壓縮包已損壞。

好了,到此壓縮文件的下載就完成了,由于我也是第一次遇到壓縮文件的下載,經(jīng)過摸索終于解決了問題。看起來也比較簡(jiǎn)單,你學(xué)會(huì)使用了嗎?

總結(jié)

到此這篇關(guān)于.netcore+vue 實(shí)現(xiàn)壓縮文件下載的文章就介紹到這了,更多相關(guān)vue 實(shí)現(xiàn)壓縮文件下載內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Vue
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产日韩欧美一区二区三区在线观看| 欧美色图激情小说| 久久久99爱| 一区二区三区精品视频| 国产精品观看| 国产丝袜在线精品| 99在线精品观看| 717成人午夜免费福利电影| 精品亚洲国产成人av制服丝袜 | 亚洲第四色夜色| 一区二区毛片| 亚洲一区二区在线观看视频 | 日韩欧美国产精品| 国产伦精品一区二区三区免费| 色94色欧美sute亚洲线路一久| 午夜久久电影网| 免费亚洲电影| 午夜欧美大尺度福利影院在线看| 国产欧美亚洲日本| 亚洲丝袜精品丝袜在线| av不卡在线看| 亚洲综合免费观看高清在线观看| 日韩一级欧洲| 一区二区三区在线免费播放| 国产精品欧美日韩一区| 一区二区三区免费| 国产日产高清欧美一区二区三区| 亚洲婷婷综合色高清在线| 亚洲国产日韩欧美一区二区三区| 中文字幕亚洲精品在线观看| 激情久久久久| 亚洲欧美电影院| 中文亚洲字幕| 午夜精品免费在线观看| 米奇777在线欧美播放| 日韩黄色免费网站| 欧美日韩黄视频| 国产成人精品亚洲777人妖| 精品国产乱码久久久久久蜜臀| 99精品视频一区二区三区| 国产农村妇女毛片精品久久麻豆 | 99国产精品99久久久久久粉嫩| 亚洲欧美乱综合| 久久激情视频| 久久99精品国产.久久久久久| 欧美片在线播放| 国产成人在线电影| 久久久蜜臀国产一区二区| 亚洲视频在线二区| 亚洲综合图片区| 色欧美片视频在线观看| 久久国产精品一区二区| 欧美一级视频精品观看| 不卡在线视频中文字幕| 国产精品久久久久久久久免费樱桃| 亚洲国产精品久久久久婷婷老年 | 色综合色狠狠天天综合色| 欧美极品aⅴ影院| 很黄很黄激情成人| 亚洲综合激情网| 欧美系列一区二区| www.爱久久.com| **网站欧美大片在线观看| 久久成人精品| 国产精品911| 国产精品网曝门| 亚洲一区免费看| 黄色日韩三级电影| 久久久精品综合| 国产视频一区欧美| 国产精品一线二线三线| 国产亚洲短视频| 国产一区二区你懂的| 久久精品理论片| 国产欧美一区二区精品忘忧草| 国产日韩欧美亚洲一区| 久久国产精品99久久久久久老狼 | 激情综合色播激情啊| 久久久久久亚洲综合影院红桃| 精品成人免费| 日本成人在线不卡视频| 精品久久久久久久久久久久包黑料 | 国产精品vip| 五月激情综合婷婷| 久久综合色播五月| 一本色道久久综合亚洲精品不卡| 久色婷婷小香蕉久久| 亚洲国产精品v| 久久天堂国产精品| av不卡免费在线观看| 亚洲与欧洲av电影| 欧美久久久久久久久| 国产一区久久| 美腿丝袜亚洲三区| 国产日产欧美一区二区三区| 色老汉一区二区三区| av亚洲精华国产精华精华| 亚洲午夜精品17c| 精品国产欧美一区二区| 国产精品毛片在线| www.日韩在线| 亚洲一区欧美一区| www国产成人免费观看视频 深夜成人网| 一区二区免费在线视频| 成人综合婷婷国产精品久久| 亚洲激情欧美激情| 欧美另类videos死尸| 极品少妇一区二区三区| 精品一区二区三区在线观看| 亚洲日本在线天堂| 26uuu亚洲| 欧美在线一二三四区| 91久久国产自产拍夜夜嗨| 国产伦精品一区二区三区免费| 亚洲精品成人在线| 精品91自产拍在线观看一区| 久久久国产精品一区二区中文| 欧美在线三区| 九一久久久久久| 亚洲国产日韩a在线播放性色| 久久久久综合网| 欧美日韩高清影院| 亚洲一区三区视频在线观看| 91一区二区三区在线观看| 麻豆高清免费国产一区| 亚洲麻豆国产自偷在线| 久久久久久久久久久黄色| 欧美日韩1234| 美玉足脚交一区二区三区图片| 欧美精品网站| 国产成人精品www牛牛影视| 日韩在线一区二区| 亚洲欧洲成人精品av97| 久久久夜色精品亚洲| 538在线一区二区精品国产| 香蕉久久国产| 欧美激情麻豆| 成人av网址在线| 国产一区二区三区在线观看精品| 亚洲国产精品久久人人爱 | 蜜桃视频第一区免费观看| 亚洲精品一二三区| 国产日韩欧美亚洲| 日韩美女视频一区二区在线观看| 欧美亚洲一区二区在线| 亚洲欧美日本视频在线观看| 欧美日韩喷水| av在线一区二区| 国产剧情一区二区三区| 日韩高清不卡一区二区三区| 亚洲精品乱码久久久久久久久| 亚洲国产精品激情在线观看| 欧美一区二区女人| 欧美怡红院视频| 久久精品人人做人人爽电影蜜月| 黄色一区二区三区四区| 91香蕉视频污| 波多野结衣欧美| 国产91精品一区二区麻豆网站 | 国产一区二区三区黄视频 | 国产欧美日韩亚州综合| 欧美大黄免费观看| 在线播放中文一区| 欧美丝袜第三区| 色久优优欧美色久优优| 午夜在线精品偷拍| 国产精品一区视频网站| 狠狠干成人综合网| 牛人盗摄一区二区三区视频| hitomi一区二区三区精品| 狠狠色狠狠色综合系列| 午夜久久福利影院| 午夜精品久久久久久久久| 亚洲精品成人少妇| 国产精品久久国产精麻豆99网站| 久久精品视频一区二区三区| 欧美第一区第二区| 91.xcao| 欧美理论电影在线| 欧美日本一区二区在线观看| 欧美无人高清视频在线观看| 91精品办公室少妇高潮对白| 久久中文欧美| 久久久久看片| 91久久精品一区二区二区| 欧美中文字幕不卡| 欧美三区在线观看| 在线播放/欧美激情| 欧美精品一级二级| 日韩一区二区电影在线| 欧美电影免费观看高清完整版| 精品国产免费视频| 国产丝袜美腿一区二区三区| 中文字幕国产一区| 亚洲视频香蕉人妖| 一区二区三区欧美| 日韩综合在线视频| 日韩成人精品在线观看| 奇米777欧美一区二区| 精品在线播放免费|