jsp+servlet實(shí)現(xiàn)文件上傳與下載功能
本文實(shí)例為大家分享了jsp servlet實(shí)現(xiàn)文件上傳與下載的具體代碼,供大家參考,具體內(nèi)容如下
上傳:
需要導(dǎo)入兩個(gè)包: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 ls = up.parserequest(request); for (fileitem fileitem : ls) { if (fileitem.isformfield()) { string fieldname = fileitem.getfieldname(); //getname()返回的是文件名字 普通域沒(méi)有文件 返回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", "上傳失敗,請(qǐng)查找原因,重新再試!"); } request.getrequestdispatcher("/pages/admin/annex-manager.jsp").forward( request, response); } }
下載(i/o流)無(wú)需導(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); } /* * 處理請(qǐng)求 * (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絕對(duì)路徑 string path = request.getsession().getservletcontext().getrealpath("/"); string savepath = path + "upload"; // 設(shè)置為下載application/x-download response.setcontenttype("application/x-download"); // 即將下載的文件在服務(wù)器上的絕對(duì)路徑 string filenamedownload = savepath + "/" + name; // 下載文件時(shí)顯示的文件保存名稱 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) { } } }
相關(guān)文章
- jsp+servlet實(shí)現(xiàn)文件上傳與下載功能
- EJB3.0部署消息驅(qū)動(dòng)Bean拋javax.naming.NameNotFoundException異常
- 在JSP中使用formatNumber控制要顯示的小數(shù)位數(shù)方法
- 秒殺系統(tǒng)Web層設(shè)計(jì)的實(shí)現(xiàn)方法
- 將properties文件的配置設(shè)置為整個(gè)Web應(yīng)用的全局變量實(shí)現(xiàn)方法
- JSP使用過(guò)濾器防止Xss漏洞
- 在JSP頁(yè)面中動(dòng)態(tài)生成圖片驗(yàn)證碼的方法實(shí)例
- 詳解JSP 內(nèi)置對(duì)象request常見(jiàn)用法
- 使用IDEA編寫(xiě)jsp時(shí)EL表達(dá)式不起作用的問(wèn)題及解決方法
- jsp實(shí)現(xiàn)局部刷新頁(yè)面、異步加載頁(yè)面的方法
- Jsp中request的3個(gè)基礎(chǔ)實(shí)踐
- JavaServlet的文件上傳和下載實(shí)現(xiàn)方法
- JSP頁(yè)面的靜態(tài)包含和動(dòng)態(tài)包含使用方法