日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java接受带文件的表单_Javaweb使用getPart接收表单文件过程解析

發(fā)布時(shí)間:2024/1/23 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java接受带文件的表单_Javaweb使用getPart接收表单文件过程解析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用getPart接收表單文件時(shí),注意Tomcat版本要在8之上。

前臺 : form.jsp

Title

請選擇文件:

后臺:TestServlet

@WebServlet(name = "TestServlet", urlPatterns = "/test")

@MultipartConfig

public class TestServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//獲取文件,參數(shù)為前臺的name

Part part = request.getPart("photo");

//判斷是否選擇了文件

if (part.getSize() == 0) {

request.setAttribute("msg", "請選擇用戶頭像");

request.getRequestDispatcher("/register.jsp").forward(request, response);

return;//不再執(zhí)行后續(xù)操作

}

//獲取文件名,獲取到文件名的格式如:a.jpg

String fileName = part.getSubmittedFileName();

/**

截取文件名的后綴名:

photo.lastIndexOf('.')的返回值為"."的位置,加1表示后綴名的起始位置。

photo.substring(photo.lastIndexOf('.')+1),表示從后綴名的起始位置截取到結(jié)束位置。

* */

String fileType = fileName.substring(fileName.lastIndexOf('.') + 1);

//判斷該文件是不是圖片格式

if (!("jpg".equalsIgnoreCase(fileType) || "jpeg".equalsIgnoreCase(fileType) || "png".equalsIgnoreCase(fileType))) {

//不是圖片格式,停止下一步,并將信息反饋給前臺頁面

request.setAttribute("msg","上傳的文件必須為圖片");

request.getRequestDispatcher("/form.jsp").forward(request, response);

return;

}

//是圖片類型,構(gòu)建一個(gè)上傳圖片的存儲路徑

String path = "E:\\upload";

File file = new File(path);

if (!file.exists()) {

file.mkdirs(); //創(chuàng)建文件和文件夾

}

//將part內(nèi)容寫到文件夾內(nèi),生成一個(gè)文件

part.write(path + "/" + fileName);

}

}

String path = "E:\\testPic";設(shè)置成本地文件夾路徑與Tomcat服務(wù)器脫離關(guān)聯(lián),可以防止文件丟失。但需要將該文件夾掛載到Tomcat服務(wù)器。

掛載方式:Eclipse:

1、雙擊集成在Eclipse中的tomcat服務(wù)器

2、點(diǎn)擊添加額外的web資源

3、將本地存儲上傳文件的文件夾添加進(jìn)來即可!

一定要ctrl + S

IDEA:

優(yōu)化:將上傳圖片封裝成工具類

UploadUtils.java

public class UploadUtils {

public static String upload(Part part, HttpServletRequest request, HttpServletResponse response) {

//獲取文件的名稱

String photo = part.getSubmittedFileName();

//重命名該文件,防止出現(xiàn)重名文件被覆蓋的情況

photo = UUID.randomUUID() + photo;

/**

截取文件名的后綴名:

photo.lastIndexOf('.')的返回值為"."的位置,加1表示后綴名的起始位置。

photo.substring(photo.lastIndexOf('.')+1),表示從后綴名的起始位置截取到結(jié)束位置。

* */

String fileType = photo.substring(photo.lastIndexOf('.') + 1);

//判斷該文件是不是圖片格式

if (!("jpg".equalsIgnoreCase(fileType) || "jpeg".equalsIgnoreCase(fileType) || "png".equalsIgnoreCase(fileType))) {

//不是圖片格式,返回空字串

return "";

}

//是圖片類型,構(gòu)建一個(gè)上傳圖片的存儲路徑,并返回字符串的名稱,用于存儲到數(shù)據(jù)庫

String path = "E:\\upload";

File file = new File(path);

if (!file.exists()) {

file.mkdirs(); //創(chuàng)建文件和文件夾

}

//將part內(nèi)容寫到文件夾內(nèi),生成一個(gè)文件

try {

part.write(path + "/" + photo);

} catch (IOException e) {

e.printStackTrace();

}

return photo;

}

}

調(diào)用工具類:

@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");

//判斷用戶是否選擇文件,如果沒有選擇頭像,不進(jìn)行后續(xù)操作

if (part.getSize() == 0) {

request.setAttribute("msg", "請選擇用戶頭像");

request.getRequestDispatcher("/register.jsp").forward(request, response);

return;

}

String photo = UploadUtils.upload(part, request, response);

//判斷photo是否為空字符串,為空字符串,說明不是圖片類型,也不進(jìn)行后續(xù)操作

if (photo == "") {

request.setAttribute("msg", "請選擇圖片類型的文件,如png,jpg,jpeg");

request.getRequestDispatcher("/register.jsp").forward(request, response);

return;

}

//不是空字符串,執(zhí)行后續(xù)操作,如將路徑存儲到數(shù)據(jù)庫等

............................................

}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

總結(jié)

以上是生活随笔為你收集整理的Java接受带文件的表单_Javaweb使用getPart接收表单文件过程解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。