public class DownloadOfUrl extends HttpServlet{
private final String ENCODING="GB2312";
private final String CONTENT_TYPE="text/html;charset=GB2312";
@Autowired
private FileAttContentService fileAttContentService;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding(ENCODING);
response.setCharacterEncoding(ENCODING);
InputStream inputStream = null;
OutputStream outputStream = null;
try {
String fileid = request.getParameter("fileid");
Long fileID = Long.parseLong(fileid);
FileAttContent fileAttContent = fileAttContentService.get(fileID);
if (fileAttContent!=null) {
String filename = fileAttContent.getFilePath();
if(filename==null||filename.trim().equals("")){
response.setContentType(CONTENT_TYPE);
PrintWriter printWriter = response.getWriter();
printWriter.print("<font color=red>文件不存在</font>");
printWriter.close();
}else {
String contentType = request.getSession().getServletContext().getMimeType(filename);
if (contentType==null) {
contentType = "application/octet-stream";
}
response.setContentType(contentType);
response.setHeader("Content-Disposition", "attachment;filename="+filename+"");
inputStream = new BufferedInputStream(new FileInputStream(filename));
outputStream = new BufferedOutputStream(response.getOutputStream());
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] b = new byte[4*1024];
int read = 0;
while((read=inputStream.read(b))!=-1){
byteArrayOutputStream.write(b, 0, read);
}
outputStream.write(byteArrayOutputStream.toByteArray());
}
}
} catch (Exception e) {
if (e.getLocalizedMessage().equals("Entity Not Found")) {
response.setContentType(CONTENT_TYPE);
PrintWriter printWriter = response.getWriter();
printWriter.print("<font color=red>文件不存在</font>");
printWriter.close();
}
logger.error("process2()", e);
}finally{
if(inputStream!=null){inputStream.close();}
if(outputStream!=null){outputStream.close();}
}
}
@Override
public void init(ServletConfig config) throws ServletException {
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,config.getServletContext());
super.init(config);
}
public void setFileAttContentService(
FileAttContentService fileAttContentService) {
this.fileAttContentService = fileAttContentService;
}
}
Servlet从服务器下载文件
最新推荐文章于 2022-12-13 16:35:07 发布