您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何實現Java、jsp、servlet文件上傳功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
實現文件上傳的方式
1、進入http://commons.apache.org/proper/commons-fileupload/using.html
2、點擊用戶指南
3、對著用戶指南一步步復制粘貼,并把代碼擼成自己想要的樣子
補充:記得要將commons-io-2.4.jar和commons-fileupload-1.2.2.jar這兩個包放到編譯器里面
現成的代碼
JSP 前端頁面
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2019/10/8 Time: 16:14 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>作業三第1遍</title> </head> <body> 文件上傳注意事項:<br> <ol> <li>提交方式必須是post</li> <li>enctype="multipart/form-data"是以字節數據的形式提交表單,否則默認是kv形式,只會提交文件名</li> <li>如果以默認的application/x-www-form-urlencode的方式提交,上傳的就不是文件本身</li> </ol> <%--application/x-www-form-urlencoded 以鍵值對的方式上傳 --%> <%-- multipart/form-data 以二進制的方式上傳 --%> <form action="/work/UploadServlet" method="post" enctype="multipart/form-data"> <input type="text" name="data1" value="data1Value"> <hr> <input type="text" name="data2" value="data2Value"> <hr> <input type="file" name="dataFile"> <hr> <input type="submit" value="上傳該表單"> <hr> </form> </body> </html>
Servlet 后臺處理頁面
package com.bd25; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import javax.servlet.ServletException; import javax.servlet.ServletInputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Enumeration; import java.util.Iterator; import java.util.List; @WebServlet(name = "UploadServlet", urlPatterns = "/UploadServlet") public class UploadServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //處理中文亂碼--已經測試這個要不要無所謂 request.setCharacterEncoding("UTF-8"); //判斷是不是傳入的一個二進制的流 boolean isMultipart = ServletFileUpload.isMultipartContent(request); //創建一個簡單工廠實例 FileItemFactory factory = new DiskFileItemFactory(); //創建一個新的文件上傳處理程序 ServletFileUpload upload = new ServletFileUpload(factory); //解析request try { List<FileItem> fileItems = upload.parseRequest(request); //處理上傳的項目 Iterator iter=fileItems.iterator(); while(iter.hasNext()){ FileItem item = (FileItem) iter.next(); if (item.isFormField()){ //普通域 processFormField(item); }else{ //文件域 此處注意processUploadFile()方法的參數里面傳入request的目的是讓下面寫文件的時候獲取根目錄用的 processUploadFile(item,request); } } } catch (FileUploadException e) { e.printStackTrace(); } ServletInputStream inputStream = request.getInputStream(); byte[] bs=new byte[1024]; int total=-1; while ((total=inputStream.read(bs))!=-1){ System.out.print(new String(bs,0,total)); } } /** * 文件域 * @param item * @param request */ private void processUploadFile(FileItem item, HttpServletRequest request) { //獲取文件相關信息 String fileName=""; if (!item.isFormField()) { String fieldName = item.getFieldName(); fileName = item.getName(); String contentType = item.getContentType(); boolean isInMemory = item.isInMemory(); long sizeInBytes = item.getSize(); System.out.println("文件名: "+fileName+" 文件屬性:"+fieldName+" 文件大小:"+sizeInBytes+" 文件類型:"+contentType); } //以下是轉存操作,找到儲存文件的根路徑 String fileRootPath=request.getServletContext().getRealPath("/WEB-INF/upload"); File dir = new File(fileRootPath); if (!dir.exists()){ dir.mkdirs(); } //寫文件 File file = new File(fileRootPath+"/"+fileName); try { item.write(file); } catch (Exception e) { e.printStackTrace(); } } /** * 普通域 * @param item */ private void processFormField(FileItem item) { String key = item.getFieldName(); String value = null; try { //處理中文亂碼 value = item.getString("UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } System.out.println(key+"----"+value); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.service(req, resp); System.out.println("刷新...."); } @Override public void init() throws ServletException { super.init(); System.out.println("初始化...."); } }
運行結果
//說明:路徑出現的位置就是網頁發布的路徑
//說明:路徑出現的位置就是網頁發布的路徑
感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何實現Java、jsp、servlet文件上傳功能”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。