中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現Java、jsp、servlet文件上傳功能

發布時間:2021-06-09 15:14:54 來源:億速云 閱讀:161 作者:小新 欄目:編程語言

這篇文章主要介紹了如何實現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這兩個包放到編譯器里面

如何實現Java、jsp、servlet文件上傳功能

現成的代碼

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文件上傳功能

//說明:路徑出現的位置就是網頁發布的路徑

如何實現Java、jsp、servlet文件上傳功能

感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何實現Java、jsp、servlet文件上傳功能”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁国市| 黔南| 奉贤区| 汕尾市| 镇康县| 织金县| 鲁山县| 安国市| 伊通| 宁陵县| 黑山县| 遵义市| 萍乡市| 壤塘县| 乌什县| 大丰市| 梓潼县| 三江| 尉犁县| 家居| 浦江县| 荆州市| 达州市| 蓬安县| 兰考县| 株洲县| 鱼台县| 丰都县| 宜州市| 六安市| 泊头市| 云林县| 平果县| 武平县| 佛学| 津市市| 隆德县| 上林县| 连山| 阳东县| 鄯善县|