首頁 Java Java基礎 Javaweb 如何使用 getPart 接收表單檔案?

Javaweb 如何使用 getPart 接收表單檔案?

Jul 22, 2020 pm 05:45 PM
javaweb 接收

Javaweb 如何使用 getPart 接收表單檔案?

使用getPart接收表单文件时,注意Tomcat版本要在8之上。

前台 : form.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/test" method="post" enctype="multipart/form-data">
  请选择文件:<input type="file" name="file"><br>
  <input type="submit" value="提交">
</form>
</body>
</html>
登入後複製

后台:TestServlet

@WebServlet(name = "TestServlet", urlPatterns = "/test")
@MultipartConfig
public class TestServlet extends HttpServlet {
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //获取文件,参数为前台的name
    Part part = request.getPart("photo");
    	//判断是否选择了文件
    if (part.getSize() == 0) {
      request.setAttribute("msg", "请选择用户头像");
      request.getRequestDispatcher("/register.jsp").forward(request, response);
      return;	//不再执行后续操作
    }
    //获取文件名,获取到文件名的格式如:a.jpg
    String fileName = part.getSubmittedFileName();
    /**
     截取文件名的后缀名:
     photo.lastIndexOf(&#39;.&#39;)的返回值为"."的位置,加1表示后缀名的起始位置。
     photo.substring(photo.lastIndexOf(&#39;.&#39;)+1),表示从后缀名的起始位置截取到结束位置。
     * */
    String fileType = fileName.substring(fileName.lastIndexOf(&#39;.&#39;) + 1);
    //判断该文件是不是图片格式
    if (!("jpg".equalsIgnoreCase(fileType) || "jpeg".equalsIgnoreCase(fileType) || "png".equalsIgnoreCase(fileType))) {
      //不是图片格式,停止下一步,并将信息反馈给前台页面
      request.setAttribute("msg","上传的文件必须为图片");
      request.getRequestDispatcher("/form.jsp").forward(request, response);
      return;
    }
    //是图片类型,构建一个上传图片的存储路径
    String path = "E:\\upload";
    File file = new File(path);
    if (!file.exists()) {
      file.mkdirs(); //创建文件和文件夹
    }
    //将part内容写到文件夹内,生成一个文件
    part.write(path + "/" + fileName);
  }
}
登入後複製

String path = "E:\\testPic";设置成本地文件夹路径与Tomcat服务器脱离关联,可以防止文件丢失。但需要将该文件夹挂载到Tomcat服务器。

挂载方式:Eclipse:

1、双击集成在Eclipse中的tomcat服务器

Javaweb 如何使用 getPart 接收表單檔案?

2、点击添加额外的web资源

Javaweb 如何使用 getPart 接收表單檔案?

3、将本地存储上传文件的文件夹添加进来即可!

Javaweb 如何使用 getPart 接收表單檔案?

一定要ctrl + S

IDEA:

Javaweb 如何使用 getPart 接收表單檔案?

Javaweb 如何使用 getPart 接收表單檔案?

优化:将上传图片封装成工具类

UploadUtils.java

public class UploadUtils {
  public static String upload(Part part, HttpServletRequest request, HttpServletResponse response) {
    //获取文件的名称
    String photo = part.getSubmittedFileName();
    //重命名该文件,防止出现重名文件被覆盖的情况
    photo = UUID.randomUUID() + photo;
    /**
     截取文件名的后缀名:
     photo.lastIndexOf(&#39;.&#39;)的返回值为"."的位置,加1表示后缀名的起始位置。
     photo.substring(photo.lastIndexOf(&#39;.&#39;)+1),表示从后缀名的起始位置截取到结束位置。
     * */
    String fileType = photo.substring(photo.lastIndexOf(&#39;.&#39;) + 1);
    //判断该文件是不是图片格式
    if (!("jpg".equalsIgnoreCase(fileType) || "jpeg".equalsIgnoreCase(fileType) || "png".equalsIgnoreCase(fileType))) {
      //不是图片格式,返回空字串
      return "";
    }
    //是图片类型,构建一个上传图片的存储路径,并返回字符串的名称,用于存储到数据库
    String path = "E:\\upload";
    File file = new File(path);
    if (!file.exists()) {
      file.mkdirs(); //创建文件和文件夹
    }
    //将part内容写到文件夹内,生成一个文件
    try {
      part.write(path + "/" + photo);
    } catch (IOException e) {
      e.printStackTrace();
    }
    return photo;
  }
}
登入後複製

调用工具类:

@WebServlet(name = "TestServlet", urlPatterns = "/test")
@MultipartConfig
public class TestServlet extends HttpServlet {
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
  //获取文件
  Part part = request.getPart("photo");
  //判断用户是否选择文件,如果没有选择头像,不进行后续操作
  if (part.getSize() == 0) {
    request.setAttribute("msg", "请选择用户头像");
    request.getRequestDispatcher("/register.jsp").forward(request, response);
    return;
  }
  String photo = UploadUtils.upload(part, request, response);
  //判断photo是否为空字符串,为空字符串,说明不是图片类型,也不进行后续操作
  if (photo == "") {
    request.setAttribute("msg", "请选择图片类型的文件,如png,jpg,jpeg");
    request.getRequestDispatcher("/register.jsp").forward(request, response);
    return;
  }
  //不是空字符串,执行后续操作,如将路径存储到数据库等
  ............................................
}
登入後複製

推荐教程:《Java教程

以上是Javaweb 如何使用 getPart 接收表單檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何分析Java Web安全中的程式碼審計 如何分析Java Web安全中的程式碼審計 May 16, 2023 am 08:04 AM

一、JavaWeb安全基礎1.何為程式碼審計?通俗的說Java程式碼審計就是透過審計Java程式碼來發現Java應用程式本身中存在的安全性問題,由於Java本身是編譯型語言,所以即使只有class檔案的情況下我們依然可以對Java程式碼進行審計。對於未編譯的Java原始碼檔案我們可以直接閱讀其原始碼,而對於已編譯的class或jar檔我們就需要進行反編譯了。 Java程式碼審計其本身並無多大難度,只要熟練審計流程和常見的漏洞審計技巧就可比較輕鬆的完成程式碼審計工作了。但是Java代碼審計的方式絕對不僅僅是使

rx是接收還是發射 rx是接收還是發射 Feb 20, 2023 pm 02:53 PM

rx是指接收,與TX(指輸出)相對應;TRX在通訊裡面是收發單元,而TX和RX,就是TRX的兩個部分;光纖中是成對出現的,收發是一對,收發必須同時,如果只收不發,只發不收都是有問題的。

虛擬號碼怎麼接收驗證碼 虛擬號碼怎麼接收驗證碼 Oct 31, 2019 pm 04:52 PM

虛擬號碼接收驗證碼的方法:先進入易碼驗證碼接收平台;然後註冊網站會員;接著打開短信驗證碼服務,並選擇運營商;最後獲取虛擬手機號,並到要發送驗證碼的平台,把手機號填上去,選擇【發送驗證碼】即可。

什麼是javaweb 什麼是javaweb Aug 09, 2023 am 11:50 AM

Javaweb是一種用於開發web應用程式的技術框架,它將Java程式語言與Web開發技術相結合,提供了高效、安全和可靠的方式來建立和部署網路應用程式。它具有強大的功能、靈活性和跨平台性,被廣泛應用於各種規模的網站和企業級系統。

如何使用JavaWeb實作顯示mysql資料庫數據 如何使用JavaWeb實作顯示mysql資料庫數據 Jun 01, 2023 am 09:49 AM

EMS-員工資訊管理系統MySQL學習之基礎操作總結MySQL學習之基礎指令實作總結建立ems庫showdatabases;createdatabaseems;useems;建立user表createtableuser(idintprimarykeyauto_increment,namevarchar(50),salarydouble,ageint);插入表格資料版(1,'zs',3000,20);insertintouser

郵件發送與接收 -- 在網路應用程式中整合郵件功能 郵件發送與接收 -- 在網路應用程式中整合郵件功能 Sep 12, 2023 pm 06:12 PM

郵件發送與接收--在網路應用程式中整合郵件功能隨著網路的普及,電子郵件已成為人們生活與工作中不可或缺的一部分。隨著Web應用的發展,將郵件功能整合到網路應用中成為一個越來越受歡迎的需求。本文將介紹如何在Web應用中實現郵件的傳送與接收功能。第一部分:郵件傳送功能的整合實作郵件傳送功能,需考慮以下幾個步驟:郵件伺服器設定在Web應用程式中發送郵件,首先需

利用PHP郵件函數實現郵件發送和接收功能的方法總結 利用PHP郵件函數實現郵件發送和接收功能的方法總結 Nov 20, 2023 pm 02:18 PM

利用PHP郵件函數實現郵件發送和接收功能的方法總結隨著互聯網的普及,電子郵件成為了人們日常生活中必不可少的溝通工具之一。而在網站開發中,也常常需要實現郵件發送和接收的功能。 PHP作為一種常用的伺服器端腳本語言,提供了一系列強大的郵件函數,可以輕鬆實現郵件的發送和接收。郵件發送功能PHP提供了mail()函數來實現郵件的發送功能。以下是使用mail()函數發

解決PHP開發中的郵件發送和接收問題的方法 解決PHP開發中的郵件發送和接收問題的方法 Jun 30, 2023 pm 01:57 PM

如何處理PHP開發中的郵件發送和接收問題在Web應用程式開發中,郵件傳輸是一項非常重要的功能,特別是在與使用者互動和訊息傳遞的過程中。 PHP作為一種流行的伺服器端腳本語言,為我們提供了各種處理電子郵件的功能和解決方案。本文將介紹如何在PHP開發中處理郵件發送和接收問題。郵件發送一、使用SMTP伺服器傳送郵件SMTP(簡單郵件傳輸協定)是用來傳送電子郵件的標

See all articles