欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

javaweb中的servlet3upload上傳文件實(shí)踐

Servlet 3.0之前的版本中,文件上傳是個(gè)挺讓人頭疼的問(wèn)題,雖然有第三方框架來(lái)實(shí)現(xiàn),但使用也還是比較麻煩,在Servlet 3.0中,這些問(wèn)題將不復(fù)存在,Servlet 3.0對(duì)文件上傳提供了直接支持,配合Servlet 3.0中基于Annotations的配置,大大簡(jiǎn)化上傳件的操作。

宕昌網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)2013年開(kāi)創(chuàng)至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

一、javax.servlet.http中Part接口

public interface Part

要上傳文件必須使用multipart/form-data作為request body。

版本:

Servlet 3.1 - Apache Tomcat 8.0.33

二、方法概述

方法描述
void delete()刪除磁盤上關(guān)于此part對(duì)象的緩存文件
java.lang.String getContentType()獲取瀏覽器傳遞過(guò)來(lái)的ContentType
java.lang.String getHeader(java.lang.String name)獲取瀏覽器傳遞過(guò)來(lái)的特定的header,參數(shù)是header的名字
java.util.Collection getHeaderNames()獲取傳遞給這個(gè)part的所有header的名字
java.util.Collection getHeaders(java.lang.String name)獲取該name對(duì)應(yīng)的所有的value
java.io.InputStream getInputStream()獲取InputStream對(duì)象,可以用于獲取上傳的文件的內(nèi)容
java.lang.String getName()獲取對(duì)應(yīng)于此part的multipart表單的名字
long getSize()獲取此part的大小,如果是上傳文件的話,表示上傳的文件大小
java.lang.String getSubmittedFileName()如果此part表示上傳文件的話,返回上傳的文件的名字
void write(java.lang.String fileName)一個(gè)比較方便的方法,將上傳的文件寫入磁盤中

三、@MultipartConfig注解

用于處理文件上傳的servlet必須使用@MultipartConfig注解,@MultipartConfig注解有4個(gè)屬性。

屬性類型概述
fileSizeThresholdint文件大小閥值,當(dāng)文件大小大于此值時(shí),文件將被寫入磁盤
locationString服務(wù)器端目錄,服務(wù)器把客戶端上傳的文件默認(rèn)存入此目錄下
maxFileSizelong允許上傳的文件的最大大小,默認(rèn)是-1,表示沒(méi)有限制
maxRequestSizelong限制該multipart/form-data請(qǐng)求的最大數(shù)據(jù)量,默認(rèn)是-1,表示沒(méi)有限制

四、處理文件上傳的servlet

//此處的@MultipartConfig注解給出了文件存放的地址和允許上傳的文件最大值
@MultipartConfig(location="F:/", maxFileSize = 1024*1024*20)
@WebServlet(name="UploadFileTest", urlPatterns="/upload")
public class UploadFileTest extends HttpServlet{
 private static final long serialVersionUID = 1L;
 //使用了commons-logging和log4j來(lái)處理日志
 private static Log log = LogFactory.getLog(UploadFileTest.class);
 //獲取注解中設(shè)置的值
 private static MultipartConfig config
 = UploadFileTest.class.getAnnotation(MultipartConfig.class);
 public UploadFileTest() {
 // TODO Auto-generated constructor stub
 }
 public void doPost(HttpServletRequest request,
  HttpServletResponse response) throws ServletException, IOException{
 request.setCharacterEncoding("UTF-8");
 Part part = null;
 try{
  part = request.getPart("file");//獲取part用于處理上傳的文件
 }catch(IllegalStateException ise){
 //上傳的單個(gè)文件超出maxFileSize或者上傳的總的數(shù)據(jù)量超出maxRequestSize時(shí)會(huì)拋出此異常
  if(config.maxRequestSize() == -1L)//如果注解中沒(méi)設(shè)置此項(xiàng),那就是單個(gè)文件超出限制
  log.error("單個(gè)文件超限");
  else if(config.maxFileSize() == -1L)//如果注解中沒(méi)有設(shè)置單個(gè)文件最大限制,那就是總數(shù)據(jù)量超限。
  log.error("總數(shù)據(jù)量超限");
  else
  log.error("Error");
 }
 if(part == null)
  return;
 String fileName = part.getSubmittedFileName();//獲得上傳的文件名,沒(méi)有判斷用戶沒(méi)有選擇文件直接提交的情況,沒(méi)有判斷上傳文件失敗的情況
 log.info("contentType : " + part.getContentType());
 log.info("fileName : " + fileName);
 log.info("fileSize : " + part.getSize());
 log.info("header names :");
 for(String headerName : part.getHeaderNames())
  log.info(headerName + " : " + part.getHeader(headerName));
 //為了避免文件重名,將時(shí)間組合到了文件名中。實(shí)際項(xiàng)目中可以考慮使用用戶主鍵或者生成一個(gè)唯一的ID來(lái)組合文件名。
 String saveName = System.currentTimeMillis() + fileName;
 part.write(saveName);//將上傳的文件保存到磁盤,默認(rèn)是注解中l(wèi)ocation的相對(duì)地址,也可以傳入一個(gè)絕對(duì)路徑
 response.setContentType("text/html;charset=UTF-8");
  PrintWriter out = response.getWriter();
  String docType =
  "<!doctype html public \"-//w3c//dtd html 4.0 " +
  "transitional//en\">\n";
  out.println(docType +
   "<html>\n" +
   "<head><title>Upload File</title></head>\n" +
   "<body bgcolor=\"#f0f0f0\">\n" +
   "<h2 align=\"center\">Upload File</h2>\n" +
   "<h3 align=\"center\">上傳文件" + fileName+ "成功," +
   "可以到項(xiàng)目目錄的F:\\下查看,保存的文件名是:"+
   saveName+"</h3>\n" +
   "</body></html>");
 }
}

五、前端html頁(yè)面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Upload File</title>
</head>
<body>
<form action="upload" method="POST" enctype="multipart/form-data">
 <table align="center" border="1" width="50%">
 <tr>
  <td>選擇要上傳的文件:</td>
  <td><input type="file" name="file"></td>
 </tr>
 <tr>
  <td><input type="submit" value="上傳"></td>
 </tr>
 </table>
</form>
</body>
</html>

servlet使用了注解的方式注冊(cè),所以不再需要使用web.xml文件。新建一個(gè)web工程,就使用這兩個(gè)文件就可以部署到tomcat了,要訪問(wèn)的url是http://localhost:8080/UploadFileTest/UploadFile.html

總結(jié)

以上所述是小編給大家介紹的servlet3 upload上傳文件實(shí)踐,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)創(chuàng)新互聯(lián)網(wǎng)站的支持!

本文題目:javaweb中的servlet3upload上傳文件實(shí)踐
標(biāo)題來(lái)源:http://aaarwkj.com/article10/gjosgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、做網(wǎng)站網(wǎng)站改版、全網(wǎng)營(yíng)銷推廣、定制開(kāi)發(fā)、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)
草嫩av一区二区三区| 蜜桃精品人妻一区二区三区 | 国内不卡一区二区三区| 日本少妇一区二区99| 熟妇人妻精品视频一区二区| 国产av一区二区三区| 亚洲精品日韩av专区| 丰满人妻侵犯中文字幕| 午夜性色福利视频你懂的| 亚洲s码在线一区二区| 一区二区三区午夜激情| 亚洲精品丝袜成人偷拍| 正在播放老肥熟妇露脸| 亚洲一区二区日韩在线| 久久99久久久久久精品| 久久精品视频亚洲一级| 男人午夜福利视频在线观看| 麻豆久久精品国产亚洲精品超碰热 | 日韩欧美亚洲另类激情一区| 一区二区三区毛片免费| 国产精品久久99一区| 福利成人午夜国产一区| 在线观看精品日本一区二| 在线观看免费视频成人播放| 国产精品一区二区免费式| 国产一区二区三区的网站| 国产精品欧美色区福利在线| 日韩精品视频一区二区在线观看 | 日韩电影网国产精品| 亚洲欧美半夜激情一区二区| 亚洲一区二区三区精品福利| 日本高清不卡在线观看| 国产日韩精品欧美综合区| 亚洲一区精品二人人爽久久| 亚洲国产精品一区一区| 婷婷综合伊人久久狠狠| 国产精品国产自产拍高清| 青青草原高清在线观看| 婷婷中文字幕在线不卡视频| 久久国产亚洲精品赲碰热| 九九视频免费观看5|