且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

[Java Web]从服务器获取文件并保存(预览)本地客户端

更新时间:2022-06-06 21:21:27

一、使用场景
客户端请求服务器B保存某个文件到本地,
服务器B从远程服务器A中得到文件路径,服务器B通过拿到的文件路径,将文件处理后,客户端得到响应,实现保存文件在本地。

二、思路代码
(这里以pdf文件为例子,服务器端B处理代码)

        //响应内容,这里在response中不设置contentType的话,在大多数(除IE外的浏览器)都是文件预览        
        response.setContentType("application/pdf");
        //响应头部
        response.setHeader("Content-disposition", "attachment;filename=" + “文件名” + ".pdf");

        OutputStream oputstream = response.getOutputStream();//
        URL url = new URL(“这里是服务器A端拿到的远程url”);
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.setDoInput(true);
        urlConnection.connect();
        InputStream inputStream = urlConnection.getInputStream();
        byte[] buffer = new byte[4*1024];
        int byteRead = 0;
        //写入流中处理
        while((byteRead=(inputStream.read(buffer)))!= -1){
            oputstream.write(buffer, 0, byteRead);
        }
        oputstream.flush();
        inputStream.close();
        oputstream.close();

整体就是,拿到远程文件url,然后服务器通过这个url建立流处理文件写入到response中。