Vue通過阿里云oss的url連接直接下載文件并修改文件名的方法
我測試過很多遍,想要通過a標(biāo)簽的形式來直接點(diǎn)擊url下載文件并重命名但是都失敗了,最終只能下載卻不能重命名 所以 換了java后臺來修改名字.以下代碼
我做的網(wǎng)頁是點(diǎn)擊文件直接下載
直接下載下來了,一開始的文件名是上傳到oss時(shí)以id命名的名字,現(xiàn)在下載的時(shí)候想改名,遇到了問題,所以寫了這篇博客
首先是后臺代碼
/** * 附件下載 * <p> * * @param param * @return ResponseDTO */ @PostMapping(value = "/download") public void downloadFile(@RequestParam Map<String, Object> param, HttpServletResponse response) throws Exception { String url1 = param.get("url").toString(); URL url = new URL(url1); URLConnection conn = url.openConnection(); InputStream inputStream = conn.getInputStream(); response.reset(); response.setContentType(conn.getContentType()); //純下載方式 文件名應(yīng)該編碼成UTF-8 response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(param.get("name").toString(), "UTF-8")); byte[] buffer = new byte[1024]; int len; OutputStream outputStream = response.getOutputStream(); while ((len = inputStream.read(buffer)) > 0) { outputStream.write(buffer, 0, len); } inputStream.close(); }
代碼里面的 url 需要事先 去阿里云獲取,我因?yàn)榍岸松蟼鞯臅r(shí)候 獲取到了url就直接傳到后臺用了.
前端vue代碼
//下載和預(yù)覽 handlePreview(file) { if (file.type == 'png' || file.type == 'jpg') { this.imageUrl = file.url; this.imageDetail = true; } else { var form = document.createElement("form"); document.body.appendChild(form); form.method = "post"; form.appendChild(this.generateHideElement('url',file.url)); form.appendChild(this.generateHideElement('name',file.name)); form.action = "接口地址"http:// 路由地址+接口地址 form.submit(); } }, generateHideElement(name, value) { var tempInput = document.createElement("input"); tempInput.type = "hidden"; tempInput.name = name; tempInput.value = value; return tempInput; },
好了這就完了,很簡單的一段代碼, 我也是剛學(xué)vue歡迎大佬指點(diǎn)
到此這篇關(guān)于Vue通過阿里云oss的url連接直接下載文件并修改文件名的方法的文章就介紹到這了,更多相關(guān)vue 阿里云oss下載文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue 讓元素抖動(dòng)/擺動(dòng)起來的實(shí)現(xiàn)代碼
這篇文章主要介紹了Vue 讓元素抖動(dòng)/擺動(dòng)起來的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05使用開源Cesium+Vue實(shí)現(xiàn)傾斜攝影三維展示功能
這篇文章主要介紹了使用開源Cesium+Vue實(shí)現(xiàn)傾斜攝影三維展示,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07vue3中路由傳參query、params及動(dòng)態(tài)路由傳參詳解
vue3中的傳參方式和vue2中一樣,都可以用query和params傳參,下面這篇文章主要給大家介紹了關(guān)于vue3中路由傳參query、params及動(dòng)態(tài)路由傳參的相關(guān)資料,需要的朋友可以參考下2022-09-09vue3.2+ts實(shí)現(xiàn)在方法中可調(diào)用的擬態(tài)框彈窗(類el-MessageBox)
這篇文章主要介紹了vue3.2+ts實(shí)現(xiàn)在方法中可調(diào)用的擬態(tài)框彈窗(類el-MessageBox),這個(gè)需求最主要的是要通過方法去調(diào)用,為了像el-messagebox使用那樣方便,需要的朋友可以參考下2022-12-12vue中動(dòng)態(tài)渲染數(shù)據(jù)時(shí)使用$refs無效的解決
這篇文章主要介紹了vue中動(dòng)態(tài)渲染數(shù)據(jù)時(shí)使用$refs無效的解決方案,具有很好的參考價(jià)值。希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01