資源簡介
jsp實(shí)現(xiàn)文件上傳下載

代碼片段和文件信息
package?me.gacl.web.controller;
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.IOException;
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;
public?class?DownLoadServlet?extends?HttpServlet?{
????
????/**
?*?
?*/
private?static?final?long?serialVersionUID?=?1L;
public?void?doGet(HttpServletRequest?request?HttpServletResponse?response)
????????????throws?ServletException?IOException?{
????????//得到要下載的文件名
????????String?fileName?=?request.getParameter(“filename“);??//23239283-92489-阿凡達(dá).avi
????????fileName?=?new?String(fileName.getBytes(“iso8859-1“)“UTF-8“);
????????//上傳的文件都是保存在/WEB-INF/upload目錄下的子目錄當(dāng)中
????????String?fileSaveRootPath=this.getServletContext().getRealPath(“/WEB-INF/upload“);
????????//通過文件名找出文件的所在目錄
????????String?path?=?findFileSavePathByFileName(fileNamefileSaveRootPath);
????????//得到要下載的文件
????????File?file?=?new?File(path?+?“\\“?+?fileName);
????????//如果文件不存在
????????if(!file.exists()){
????????????request.setAttribute(“message“?“您要下載的資源已被刪除!!“);
????????????request.getRequestDispatcher(“/message.jsp“).forward(request?response);
????????????return;
????????}
????????//處理文件名
????????String?realname?=?fileName.substring(fileName.indexOf(“_“)+1);
????????//設(shè)置響應(yīng)頭,控制瀏覽器下載該文件
????????response.setHeader(“content-disposition“?“attachment;filename=“?+?URLEncoder.encode(realname?“UTF-8“));
????????//讀取要下載的文件,保存到文件輸入流
????????FileInputStream?in?=?new?FileInputStream(path?+?“\\“?+?fileName);
????????//創(chuàng)建輸出流
????????OutputStream?out?=?response.getOutputStream();
????????//創(chuàng)建緩沖區(qū)
????????byte?buffer[]?=?new?byte[1024];
????????int?len?=?0;
????????//循環(huán)將輸入流中的內(nèi)容讀取到緩沖區(qū)當(dāng)中
????????while((len=in.read(buffer))>0){
????????????//輸出緩沖區(qū)的內(nèi)容到瀏覽器,實(shí)現(xiàn)文件下載
????????????out.write(buffer?0?len);
????????}
????????//關(guān)閉文件輸入流
????????in.close();
????????//關(guān)閉輸出流
????????out.close();
????}
????
????/**
????*?@Method:?findFileSavePathByFileName
????*?@Description:?通過文件名和存儲上傳文件根目錄找出要下載的文件的所在路徑
????*?@Anthor:孤傲蒼狼
????*?@param?filename?要下載的文件名
????*?@param?saveRootPath?上傳文件保存的根目錄,也就是/WEB-INF/upload目錄
????*?@return?要下載的文件的存儲目錄
????*/?
????public?String?findFileSavePathByFileName(String?filenameString?saveRootPath){
????????int?hashcode?=?filename.hashCode();
????????int?dir1?=?hashcode&0xf;??//0--15
????????int?dir2?=?(hashcode&0xf0)>>4;??//0-15
????????String?dir?=?saveRootPath?+?“\\“?+?dir1?+?“\\“?+?dir2;??//upload\2\3??upload\3\5
????????File?file?=?new?File(dir);
????????if(!file.exists()){
????????????//創(chuàng)建目錄
????????????file.mkdirs();
????????}
????????return?dir;
????}
????
????public?void?doPost(HttpServletRequest?request?HttpServletResponse?response)
????????????throws?ServletException?IOException?{
????????doGet(request?response);
????}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????845??2017-05-08?18:10??FileUploadAndDownLoad\.classpath
?????文件???????1054??2017-05-08?18:10??FileUploadAndDownLoad\.project
?????文件????????503??2017-05-08?18:10??FileUploadAndDownLoad\.settings\.jsdtscope
?????文件????????364??2017-05-08?18:10??FileUploadAndDownLoad\.settings\org.eclipse.jdt.core.prefs
?????文件????????515??2017-05-08?18:10??FileUploadAndDownLoad\.settings\org.eclipse.wst.common.component
?????文件????????349??2017-05-08?18:10??FileUploadAndDownLoad\.settings\org.eclipse.wst.common.project.facet.core.xm
?????文件?????????49??2017-05-08?18:10??FileUploadAndDownLoad\.settings\org.eclipse.wst.jsdt.ui.superType.container
?????文件??????????6??2017-05-08?18:10??FileUploadAndDownLoad\.settings\org.eclipse.wst.jsdt.ui.superType.name
?????文件???????3616??2017-05-08?19:33??FileUploadAndDownLoad\build\classes\me\gacl\web\controller\DownLoadServlet.class
?????文件???????2602??2017-05-08?19:33??FileUploadAndDownLoad\build\classes\me\gacl\web\controller\ListFileServlet.class
?????文件???????1280??2017-05-08?19:33??FileUploadAndDownLoad\build\classes\me\gacl\web\controller\UploadHandleServlet$1.class
?????文件???????6621??2017-05-08?19:33??FileUploadAndDownLoad\build\classes\me\gacl\web\controller\UploadHandleServlet.class
?????文件???????3214??2017-05-08?19:24??FileUploadAndDownLoad\src\me\gacl\web\controller\DownLoadServlet.java
?????文件???????2753??2017-05-08?19:24??FileUploadAndDownLoad\src\me\gacl\web\controller\ListFileServlet.java
?????文件???????9690??2017-05-08?19:00??FileUploadAndDownLoad\src\me\gacl\web\controller\UploadHandleServlet.java
?????文件????????644??2017-05-08?19:59??FileUploadAndDownLoad\WebContent\listfile.jsp
?????文件????????180??2017-05-08?18:47??FileUploadAndDownLoad\WebContent\message.jsp
?????文件?????????39??2017-05-08?18:10??FileUploadAndDownLoad\WebContent\me
?????文件????????538??2017-05-08?18:47??FileUploadAndDownLoad\WebContent\upload.jsp
?????文件??????57779??2017-05-08?18:11??FileUploadAndDownLoad\WebContent\WEB-INF\lib\commons-fileupload-1.2.1.jar
?????文件??????87776??2017-05-08?18:11??FileUploadAndDownLoad\WebContent\WEB-INF\lib\commons-io-1.3.2.jar
?????文件?????414240??2017-05-08?19:29??FileUploadAndDownLoad\WebContent\WEB-INF\lib\jstl-1.2.jar
?????文件?????393259??2017-05-08?19:33??FileUploadAndDownLoad\WebContent\WEB-INF\lib\standard.jar
?????文件???????2254??2017-05-08?19:59??FileUploadAndDownLoad\WebContent\WEB-INF\web.xm
?????目錄??????????0??2017-05-08?20:35??FileUploadAndDownLoad\build\classes\me\gacl\web\controller
?????目錄??????????0??2017-05-08?20:35??FileUploadAndDownLoad\build\classes\me\gacl\web
?????目錄??????????0??2017-05-08?20:35??FileUploadAndDownLoad\src\me\gacl\web\controller
?????目錄??????????0??2017-05-08?20:35??FileUploadAndDownLoad\build\classes\me\gacl
?????目錄??????????0??2017-05-08?20:35??FileUploadAndDownLoad\src\me\gacl\web
?????目錄??????????0??2017-05-08?20:35??FileUploadAndDownLoad\build\classes\me
............此處省略14個文件信息
評論
共有 條評論