• vue实现后端文件下载到当前浏览器


    比如现在在后端生成一个.sql文件并下载到当前浏览器:比如我的后端接口是localhost:8087/user/userController/exportSql,

    前端地址是localhost:9095/user#。

    一、前端:

    <el-button @click="getSql()">导出</el-button>
    
    var url = process.env.BASE_API
    url += '/userController/exportSql?userId=' + userId
    window.open(url)

    注意这里url不能是/user/userController/expoerSql,因为window.open,会把/当成前端的页面地址,而不是后端。 

    二、后端:

    /**
    	 * 导出SQL
    	 */
        @ResponseBody
    	@RequestMapping("/exportSql")
    	public HttpResult exportSql(String userId,HttpServletResponse response){
    		try {
    			
    			response.reset();
    		    response.setContentType("text/plain");  
    	        response.addHeader("Content-Disposition",  
    	                "attachment;filename=测试user.sql");
    	        BufferedOutputStream buff = null;  
    	        StringBuffer write = new StringBuffer();  
    	        String enter = "\r\n";  
    	        ServletOutputStream outSTr = null;  
    	        try {  
    	            outSTr = response.getOutputStream();
    	            buff = new BufferedOutputStream(outSTr);  
    	            //拼接SQL
    	            write.append("内容为"+userId);	      
    	            buff.write(write.toString().getBytes("UTF-8"));  
    	            buff.flush();  
    	            buff.close();  
    	        } catch (Exception e) {  
    	            e.printStackTrace();  
    	        } finally {  
    	            try {  
    	                buff.close();  
    	                outSTr.close();  
    	            } catch (Exception e) {  
    	                e.printStackTrace();  
    	            }  
    	        }  
    	        
    			return HttpResult.getSuccessInstance();
    		} catch (Exception e) {
    			logger.error("导出SQL:" + e.getMessage(), e);
    			return HttpResult.getFailedInstance("生成SQL失败");
    		}
    		
    	}
    }
    

      如果是视频,修改为:

    response.setContentType("video/mpeg4");
                response.addHeader("Content-Disposition",
                        "attachment;filename="+ossResourcesInfo.getName());  

    如果要显示文件大小和预计时长,加上下面这段逻辑

    InputStream inputStream = urlConnection.getInputStream();
     response.setHeader("Content-Length", ""+contentLength);
    

      

    原文:https://blog.csdn.net/w_t_y_y/article/details/95603361

  • 相关阅读:
    【强烈推荐】 超漂亮的仿腾讯弹出层效果(兼容主流浏览器<转>;
    必须掌握的八个【cmd 命令行】
    grep命令的用法
    sed 命令的用法1
    Paste命令的用法
    uniq命令的用法
    join命令的用法
    Sort命令的用法
    cut命令的用法
    tr命令学习
  • 原文地址:https://www.cnblogs.com/Sincerity/p/15785164.html
Copyright © 2020-2023  润新知