Java Web——图像上传
生活随笔
收集整理的這篇文章主要介紹了
Java Web——图像上传
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、jsp中:
1 <body> 2 <!-- 注意: 1. type="file"; 2.method="post" ; 3.enctype="multipart/form-data" --> 3 <form action="UploadServlet" method="post" enctype="multipart/form-data"> 4 雇員編號:<input type="text" name="empno"/><br/><br/> 5 雇員姓名:<input type="text" name="ename"/><br/><br/> 6 所在部門: 7 <select name="deptno"> 8 <option value="10">銷售部</option> 9 <option value="20">IT部</option> 10 <option value="30">人力部</option> 11 </select><br/><br/> 12 驗證碼:<input type="text" name="code"><img id="code" alt="請刷新" src="validateCodeServlet" οnclick="changeCode()" style="cursor:hand;"><a href="javascript:changeCode()">換一張</a><br/><br/> 13 14 15 頭像:<input type="file" name="uploadFile"> 16 <img src="${image_path}" title="${image_name}" width="200" height="200"> 17 <br/><br/> 18 19 <input type="reset" value="重置"/> 20 <input type="submit" value="注冊"/> 21 </form> 22 </body> 23 </html>?
?
?
二、導入工具包
?
三、servlet中取得數據
?
package servlet;import java.io.File; import java.io.IOException; import java.util.Date; 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 UploadServlet*/ @WebServlet("/UploadServlet") public class UploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//判斷上傳表單是否為multipart/form-data類型if(ServletFileUpload.isMultipartContent(request)){try {//1. 創建DiskFileItemFactory對象,設置緩沖區大小和臨時文件目錄DiskFileItemFactory factory = new DiskFileItemFactory();//System.out.println(System.getProperty("java.io.tmpdir"));//默認臨時文件夾//2. 創建ServletFileUpload對象,并設置上傳文件的大小限制。ServletFileUpload sfu = new ServletFileUpload(factory);sfu.setSizeMax(10*1024*1024);//以byte為單位 不能超過10M 1024byte = 1kb 1024kb=1M 1024M = 1Gsfu.setHeaderEncoding("utf-8");//3. 調用ServletFileUpload.parseRequest方法解析request對象,得到一個保存了所有上傳內容的List對象。List<FileItem> fileItemList = sfu.parseRequest(request);Iterator<FileItem> fileItems = fileItemList.iterator();//4. 遍歷list,每迭代一個FileItem對象,調用其isFormField方法判斷是否是上傳文件while(fileItems.hasNext()){FileItem fileItem = fileItems.next();//普通表單元素if(fileItem.isFormField()){String name = fileItem.getFieldName();//name屬性值String value = fileItem.getString("utf-8");//name對應的value值 System.out.println(name + " = "+value);}//<input type="file">的上傳文件的元素else{String fileName = fileItem.getName();//文件名稱System.out.println("原文件名:" + fileName);//Koala.jpg String suffix = fileName.substring(fileName.lastIndexOf('.'));System.out.println("擴展名:" + suffix);//.jpg//新文件名(唯一)String newFileName = new Date().getTime() + suffix;System.out.println("新文件名:" + newFileName);//image\1478509873038.jpg//5. 調用FileItem的write()方法,寫入文件File file = new File(request.getServletContext().getRealPath("image")+"\\"+newFileName);System.out.println(file.getAbsolutePath());fileItem.write(file);//6. 調用FileItem的delete()方法,刪除臨時文件 fileItem.delete();/** 存儲到數據庫時注意* 1.保存源文件名稱 Koala.jpg* 2.保存相對路徑 image/1478509873038.jpg* */request.setAttribute("image_name",fileName);request.setAttribute("image_path","image/"+newFileName);request.getRequestDispatcher("/upload.jsp").forward(request, response);}}} catch (FileUploadException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}}}?
轉載于:https://www.cnblogs.com/ccw95/p/6040256.html
總結
以上是生活随笔為你收集整理的Java Web——图像上传的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT 中使用 c++ 的指针
- 下一篇: hive整合phoenix