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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Servlet3.0新特性】第03节_文件上传

發(fā)布時間:2024/9/5 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Servlet3.0新特性】第03节_文件上传 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這是一個Web Project


?

首先是web.xml

?

<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"><!-- Servlet3.0需要Tomcat7和JavaEE6,配置方法詳見 --><!-- http://blog.csdn.net/jadyer/article/details/9164655 --><!-- http://blog.csdn.net/jadyer/article/details/9164737 --><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list> </web-app>

?

下面是表單輸入頁index.jsp

?

<%@ page language="java" pageEncoding="UTF-8"%> <form action="<%=request.getContextPath()%>/upload" method="POST" enctype="multipart/form-data"><input name="uploadFile" type="file"><br/><input type="submit"> <form>


最后是用于處理文件上傳的HelloServlet.java

?

?

package com.jadyer.servlet;import java.io.File; import java.io.IOException; import java.io.PrintWriter;import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part;/*** Servlet3.0新特性之便利的文件上傳* @see ------------------------------------------------------------------------------------------------------------------* @see 注意要使用@MultipartConfig注解標(biāo)明此Servlet支持文件上傳* @see 否則獲取到的javax.servlet.http.Part就是空的,Part.getXxx()就會報告NullPointerException* @see ------------------------------------------------------------------------------------------------------------------* @see 關(guān)于@MultipartConfig的幾個屬性* @see location--->指定存儲所上傳文件的目錄....分以下兩種情況* @see 1)若part.write(fileName)傳的參數(shù)只有上傳的文件名,那么最后文件就會被上傳到location目錄中* @see 若此時location所指定的目錄不存在,則會報告下面的異常(Tomcat7.x啟動時不會報)* @see java.io.IOException: The temporary upload location [D:\\upload\22] is not valid* @see 2)若part.write(savePath+"/"+fileName),則無論location是否指定目錄,最后文件都會被上傳到savePath* @see 但是,如果此時location所指定的目錄不存在,那么也會報告第一種情況中的異常,并導(dǎo)致上傳文件失敗* @see 總結(jié):API說location是儲存文件的目錄,但根據(jù)上面兩種情況,我感覺location指的是臨時文件目錄,故不推薦使用* @see 總結(jié):隨后我又查看了Oracle官方文檔,發(fā)現(xiàn)該屬性指的就是臨時文件目錄* @see 總結(jié):其官方文檔的地址為http://docs.oracle.com/javaee/6/tutorial/doc/gmhal.html* @see fileSizeThreshold-->設(shè)置閾值,達(dá)到閾值后會將所上傳的文件從臨時目錄中寫到磁盤..單位為byte,默認(rèn)值是0* @see maxFileSize-------->允許上傳的單個文件最大值,即不限制文件總數(shù)及總大小,只限制單個文件..單位為byte,默認(rèn)值是-1,即無限制* @see maxRequestSize----->允許上傳的文件的最大值,這里指的是一次性上傳的所有文件的合計大小..單位也是byte,默認(rèn)值是-1,即無限制* @see ------------------------------------------------------------------------------------------------------------------* @create Jun 24, 2013 3:19:12 PM* @author 玄玉<http://blog.csdn.net/jadyer>*/ @WebServlet(urlPatterns="/upload") @MultipartConfig(fileSizeThreshold=1024*1024*2, maxFileSize=1024*1024*20, maxRequestSize=1024*1024*200) public class HelloServlet extends HttpServlet {private static final long serialVersionUID = -1812698941752545746L;@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//解決上傳文件的中文亂碼問題req.setCharacterEncoding("UTF-8");//解決應(yīng)答給瀏覽器的中文亂碼問題resp.setCharacterEncoding("UTF-8");//回顯上傳結(jié)果給瀏覽器String uploadResult = null;PrintWriter out = resp.getWriter();resp.setContentType("text/html; charset=UTF-8");try{//獲取上傳的文件的Part,下面的操作都是以這個Part為中心的Part part = req.getPart("uploadFile");//本例中它的值是form-data; name="uploadFile"; filename="玄玉.png"String _str = part.getHeader("content-disposition");//獲取上傳的文件真實名字(含后綴)String fileName = _str.substring(_str.lastIndexOf("=")+2, _str.lastIndexOf("\""));//指定上傳的文件的存儲目錄并確保其存在String savePath = "D:/upload/";File savePathFolder = new File(savePath);if(!savePathFolder.exists()){savePathFolder.mkdirs();}//上傳文件(寫入磁盤)part.write(savePath + "/" + fileName);uploadResult = "上傳完畢<br/>上傳的文件Part=" + part.getName() + "<br/>上傳的文件名稱=" + fileName+ "<br/>上傳的文件大小=" + part.getSize() + "<br/>上傳的文件類型=" + part.getContentType();}catch(IllegalStateException ise){uploadResult = "上傳失敗,失敗原因如下<br/>" + ise.getMessage();}out.print(uploadResult);out.flush();out.close();} }

轉(zhuǎn)載于:https://www.cnblogs.com/jiangu66/p/3155559.html

總結(jié)

以上是生活随笔為你收集整理的【Servlet3.0新特性】第03节_文件上传的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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