一、使用场景
客户端请求服务器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中。