Java开发之文件下载
发布时间:2020-05-24 16:01:32 所属栏目:Java 来源:互联网
导读:Java开发之文件下载
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 package com.example.web;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
public class Download extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
response.setContentType("text/html;charset=utf-8");
OutputStream out=response.getOutputStream();
//获取要下载的文件名
String fileName=request.getParameter("loadname");
fileName=new String(fileName.getBytes("ISO-8859-1"),"UTF-8");
//得到下载文件的路径
String storPath=getServletContext().getRealPath("WEB-INF/files");
//得到源文件名
String oldName=fileName.split("_")[1];
//进一步根据hashcode来确定子文件夹
String childPath=generateDir(storPath,fileName);
//判断要下载的文件是否还存在
File file=new File(storPath+File.separator+childPath+File.separator+fileName);
if(!file.exists()){
out.write("你要下载的资源可能不存在".getBytes());
}else{
//如果存在就进行下载操作
InputStream is=new FileInputStream(file);
//指明下载的响应头
response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode(oldName,"UTF-8"));
IOUtils.copy(is,out);
is.close();
}
}
private String generateDir(String storePath,String fileName) {
int hashcode=fileName.hashCode();
int dir1=hashcode & 0xf;
int dir2=(hashcode & 0xf0)>>4;
String childPath=dir1+File.separator+dir2;
File file=new File(storePath,childPath);
if(!file.exists()){
file.mkdirs();
}
return childPath;
}
public void doPost(HttpServletRequest request,IOException {
this.doGet(request,response);
}
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
