jsp+servlet實現(xiàn)文件上傳與下載功能
更新時間:2017年12月18日 08:44:17 作者:sta2011
這篇文章主要為大家詳細(xì)介紹了jsp+servlet實現(xiàn)文件上傳與下載功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了jsp servlet實現(xiàn)文件上傳與下載的具體代碼,供大家參考,具體內(nèi)容如下
上傳:
需要導(dǎo)入兩個包:commons-fileupload-1.2.1.jar,commons-io-1.4.jar
import java.io.File; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** * 上傳附件 * @author new * */ public class UploadAnnexServlet extends HttpServlet { private static String path = ""; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } /* * post處理 * (non-Javadoc) * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { path = this.getServletContext().getRealPath("/upload"); try { DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload up = new ServletFileUpload(factory); List<FileItem> ls = up.parseRequest(request); for (FileItem fileItem : ls) { if (fileItem.isFormField()) { String FieldName = fileItem.getFieldName(); //getName()返回的是文件名字 普通域沒有文件 返回NULL // String Name = fileItem.getName(); String Content = fileItem.getString("gbk"); request.setAttribute(FieldName, Content); } else { String nm = fileItem.getName().substring( fileItem.getName().lastIndexOf("\\") + 1); File mkr = new File(path, nm); if (mkr.createNewFile()) { fileItem.write(mkr);//非常方便的方法 } request.setAttribute("result", "上傳文件成功!"); } } } catch (Exception e) { e.printStackTrace(); request.setAttribute("result", "上傳失敗,請查找原因,重新再試!"); } request.getRequestDispatcher("/pages/admin/annex-manager.jsp").forward( request, response); } }
下載(i/o流)無需導(dǎo)包:
import java.io.IOException; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 下載文件 * @author * */ public class DownloadFilesServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 8594448765428224944L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } /* * 處理請求 * (non-Javadoc) * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("fileName"); System.out.print("dddddddddd:" + name); // web絕對路徑 String path = request.getSession().getServletContext().getRealPath("/"); String savePath = path + "upload"; // 設(shè)置為下載application/x-download response.setContentType("application/x-download"); // 即將下載的文件在服務(wù)器上的絕對路徑 String filenamedownload = savePath + "/" + name; // 下載文件時顯示的文件保存名稱 String filenamedisplay = name; // 中文編碼轉(zhuǎn)換 filenamedisplay = URLEncoder.encode(filenamedisplay, "UTF-8"); response.addHeader("Content-Disposition", "attachment;filename=" + filenamedisplay); try { java.io.OutputStream os = response.getOutputStream(); java.io.FileInputStream fis = new java.io.FileInputStream( filenamedownload); byte[] b = new byte[1024]; int i = 0; while ((i = fis.read(b)) > 0) { os.write(b, 0, i); } fis.close(); os.flush(); os.close(); } catch (Exception e) { } } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
window.top[_CACHE]實現(xiàn)多個jsp頁面共享一個js對象
兩個js頁面要共享一個就js對象,想了半天用window.top['_CACHE']來存放這個變量,即可實現(xiàn),不同Jsp頁面直接的對象共享2014-08-08jsp使用sessionScope獲取session案例詳解
這篇文章主要介紹了jsp使用sessionScope獲取session案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08AJAX自學(xué)練習(xí) 無刷新從數(shù)據(jù)庫后臺取數(shù)據(jù)顯示
AJAX自學(xué)練習(xí) 無刷新從數(shù)據(jù)庫后臺獲取數(shù)據(jù)并顯示的代碼,大家可以參考下。2009-09-09