J2EE Servlet上傳文件到服務(wù)器并相應(yīng)顯示功能的實(shí)現(xiàn)代碼
編輯上傳文件的頁(yè)面upload.html
注意事項(xiàng):上傳方式使用POST不能使用GET(GET不能上傳文件)
表單 enctype 屬性應(yīng)該設(shè)置為 multipart/form-data.(表示提交的數(shù)據(jù)是二進(jìn)制文件)
upload.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>文件上傳</title> </head> <body> <form action="UploadPhotoServlet" method="POST" enctype="multipart/form-data"> 人物名稱:<input type="text" name="heroName"/><br> 上傳頭像:<input type="file" name="filepath"/><br> <input type="submit" value="上傳"> </form> </body> </html>
UPloadPtotoServlet文件上傳類--上傳功能的開(kāi)發(fā)
將commons-io-1.4.jar和commons-fileupload-1.2.2.jar 兩個(gè)jar包放到WEB-INF/lib 目錄下。
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; 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.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** * Servlet implementation class UploadPhotoServlet */ @WebServlet("/UploadPhotoServlet") public class UploadPhotoServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public UploadPhotoServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub // response.getWriter().append("Served at: ").append(request.getContextPath()); String filename=null; DiskFileItemFactory factory=new DiskFileItemFactory(); //磁盤文件條目工廠 ServletFileUpload upload=new ServletFileUpload(factory); //負(fù)責(zé)處理上傳的文件數(shù)據(jù),并將表單中每個(gè)輸入項(xiàng)封裝成一個(gè)fileitem對(duì)象中 //設(shè)置上傳文件的大小為10M factory.setSizeThreshold(2*1024*1024); List items=null; try { //parse 解析 items=upload.parseRequest(request); //得到一個(gè)保存了所有上傳內(nèi)容的List對(duì)象 } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } Iterator iter=items.iterator(); //迭代上傳的文件數(shù)據(jù) while(iter.hasNext()){ FileItem item=(FileItem) iter.next(); if(!item.isFormField()){ //如果不是上傳的 //根據(jù)時(shí)間戳創(chuàng)建頭像文件 filename=System.currentTimeMillis()+".jpg"; //通過(guò)getrealpath獲取上傳文件夾,如果項(xiàng)目存在將存在當(dāng)前項(xiàng)目下 不存在的話創(chuàng)建項(xiàng)目文件夾 //圖片文件夾 String photoFolder=request.getServletContext().getRealPath("uploaded"); File f=new File(photoFolder,filename); f.getParentFile().mkdirs(); //如果父文件夾不存在則自動(dòng)創(chuàng)建 //通過(guò)item.getInputStream() 獲取瀏覽器上傳的文件 InputStream is = item.getInputStream(); //將文件讀進(jìn)來(lái) //復(fù)制文件 FileOutputStream fos=new FileOutputStream(f); //往界面上顯示 byte[] b=new byte[2*1024*1024]; int len=0; while((len=is.read(b))!=-1){ fos.write(b, 0, len); } fos.close(); }else{ System.out.println(item.getFieldName());//heroName String value=item.getString(); value=new String(value.getBytes("ISO-8859-1"), "UTF-8"); System.out.println(value); //桑葚 } } String html="<img width='200' height='150' src='uploaded/%s'/>"; response.setContentType("text/html"); PrintWriter pw=response.getWriter(); pw.format(html, filename); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
運(yùn)行結(jié)果:
總結(jié)
以上所述是小編給大家介紹的J2EE Servlet上傳文件到服務(wù)器并相應(yīng)顯示功能的實(shí)現(xiàn)代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
關(guān)于Java中的mysql時(shí)區(qū)問(wèn)題詳解
這篇文章主要給大家介紹了關(guān)于Java中mysql時(shí)區(qū)問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05logback的isDebugEnabled日志配置級(jí)別源碼解析
這篇文章主要為大家介紹了logback的isDebugEnabled日志配置級(jí)別源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11SpringBoot+Quartz實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)
這篇文章主要為大家詳細(xì)介紹了springBoot+Quartz實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09Java 基于TCP Socket 實(shí)現(xiàn)文件上傳
這篇文章主要介紹了Java 基于TCP Socket 實(shí)現(xiàn)文件上傳的示例代碼,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-12-12Java使用iTextPDF生成PDF文件的實(shí)現(xiàn)方法
這篇文章主要介紹了Java使用iTextPDF生成PDF文件的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02