服务器文件下载
package com.stf.springcloud;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
/**
*
* @Desc:文件下载类
* @createTime:2020年9月9日上午9:47:28
*/
@Service
public class DocumentDownService {
/** 缓冲区的大小 */
public static final int SIZE = 1024;
/**
* @param url 文件所在服务器路径(绝对路径)
* @param fileName 下载文件名自定义
* @throws IOException
*/
public void downloadLocal(String url,String fileName) throws IOException {
HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
.getResponse();
// 读到流中
InputStream inStream = new FileInputStream(url);// 文件的存放路径
// 设置输出的格式
response.reset();
response.addHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode(fileName,"utf-8") + "\"");
// 循环取出流中的数据(类似与NIO中的缓存区)
byte[] b = new byte[SIZE];
int len;
try {
//将流中的数据写到缓存区中
while ((len = inStream.read(b)) > 0)
//将缓存区的数据写到下载的指定位置
response.getOutputStream().write(b, 0, len);
} catch (IOException e) {
e.printStackTrace();
}finally{
response.getOutputStream().close();
inStream.close();
}
}
}