下载文件-前后端解决方案

下载文件-前后端解决方案

java

  1. 下载远程地址文件
// response直接返回文件流
   private void outputStream(HttpServletResponse response,String url){
        try{
            URL fileUrl = new URL(url);
            HttpURLConnection conn = (HttpURLConnection)fileUrl.openConnection();
            conn.setConnectTimeout(6*1000);
            //得到输入流
            InputStream inputStream = conn.getInputStream();
            OutputStream os = response.getOutputStream();
            String filetype = url.substring(url.length()-3,url.length());
            response.addHeader("Content-Type","audio/wav;charset=UTF-8");
            int len=0;
            byte[] b=new byte[1024];
            while((len = inputStream.read(b))!=-1){
                os.write(b,0,len);
            }
            inputStream.close();
            os.close();
        }catch (Throwable e){
            e.printStackTrace();
            System.err.println("输出音频文件流异常");
        }
    }

该方法的缺点:
1、需定义response的content-type;
2、大文件下载占取内存(IO读写速度约为50km/h)

html

  1. a href=‘下载地址’ download

该方法的缺点:
1、兼容性:
只有 Firefox 和 Chrome 支持 download 属性。
2、下载地址跨域:
根据浏览器的行为决定:浏览器可以打开文件直接打开,不能打开文件才下载;download的重命名无效。

js

  1. fileSaver.js

该方法的缺点:
1、大文件限制:
下载文件-前后端解决方案_第1张图片

设置header信息

header(“Content-Disposition: attachment; filename=‘download.jpg’”);

你可能感兴趣的:(下载文件-前后端解决方案)