進入新的公司,分到了一個小需求,很簡單,就是在管理系統的列表頁面增加批量導入和導出的功能,不過居然讓我連前端一起干,我@#@%#@!!,沒辦法只能干,后端接口很簡單,用poi或jxl讀取或者生成excel文件就行,前端就很費勁,之前干前端還是5年前,jsp+js的方式。而現在都是vue+element。遇到了一些問題。記錄下來,如果還有誰遇到了,希望能有幫助
一、文件不存在
模板下載,導入前要下載模板,就琢磨這把模板excel文件當成一個靜態資源直接放到項目中下載。基於原來html的想法,我直接在下載模板的地方加一個a標簽。
<a href="./XXX/XXX/模板.xlxs" >下載模板</a>
然后發現點擊后不會觸發下載,而是跳到莫名奇妙的首頁,后來發現vue里a標簽正確用法如下:要有download屬性
<a href="./XXX/XXX/模板.xlxs" download="模板.xlxs">下載模板</a>
能夠觸發瀏覽器的下載動作了,不過發現出現“下載出錯,文件不存在”的錯誤,經過百度,vue工程下載靜態資源應該放在/public/static/..下面,並且路徑要寫public下面index.html的相對路徑
<a href="./static/file/話術導入模板.xlsx" download="話術導入模板.xlsx">模板下載</a>
二、文件已損壞
這樣在前后單分別啟動(vue打包前)可以正常下載,不過把vue工程執行打包命令(npm run build:prod)打包到springboot jar包的/resource/后,啟動jar包項目,訪問,下載后,打開excel,出現文件已損壞的問題,又在網上查詢,這塊網上說的比較少,不過還是找到了解決辦法,是因為,mven在編譯resource下面的文件會進行相關處理,比如變量替換,破壞了excel文件。解決辦法如下,修改pom文件。
到此,打包后也能正常下載了,問題解決。