| 
                          
短视频,自媒体,达人种草一站服务
 
这篇文章主要为大家详细介绍了vue实现下载文件流完整前后端代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 
使用Vue时,我们前端如何处理后端返回的文件流 
首先后端返回流,这里我把流的动作拿出来了,我很多地方要用 
/**  * 下载单个文件  *  * @param docId  */  @GetMapping("/download/{docId}")  public void download(@PathVariable("docId") String docId,        HttpServletResponse response) {   outWrite(response, docId);  }    /**  * 输出文件流  * @param response  * @param docId  */  private void outWrite(HttpServletResponse response, String docId) {   ServletOutputStream out = null;   try {    out = response.getOutputStream();    // 禁止图像缓存。    response.setHeader("Pragma", "no-cache");    response.setHeader("Cache-Control", "no-cache");    response.setDateHeader("Expires", 0);    byte[] bytes = docService.downloadFileSingle(docId);    if (bytes != null) {     MagicMatch match = Magic.getMagicMatch(bytes);     String mimeType = match.getMimeType();     response.setContentType(mimeType);     out.write(bytes);    }    out.flush();   } catch (Exception e) {    UnitedLogger.error(e);   } finally {    IOUtils.closeQuietly(out);   }  } 
前端这里我引入了一个组件 js-file-download 
npm install js-file-download --save 
然后在Vue文件中添加进来 
import fileDownload from "js-file-download"; 
// 文档操作列对应事件  async handleCommand(item, data) {   switch (item.key) {   case "download":    var res = await this.download(data);    return fileDownload(res, data.name);   ...   default:   }   // 刷新当前层级的列表   const folder = this.getLastFolderPath();   this.listClick(folder.folderId, folder.name);  },  // 下载  async download(row) {   if (this.isFolder(row.type)) {   return FolderAPI.download(row.id);   } else {   return DocAPI.download(row.id);   }  }, 
docAPI js 注意需要设置responseType 
/**  * 下载单个文件  * @param {*} id  */ const download = (id) => {  return request({  url: _DataAPI.download + id,  method: "GET",  responseType: 'blob'  }); }; 
这样即可成功下载。 
关于vue.js的学习教程,请大家点击专题vue.js组件学习教程、Vue.js前端组件学习教程进行学习。                         (编辑:91站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |