Java文件下載

pooi 9年前發布 | 3K 次閱讀 Java Windows8,FlashSwing

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