Java文件下載
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, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); }
} </pre>
本文由用戶 pooi 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!