最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)多文件上傳功能

 更新時(shí)間:2021年06月29日 16:25:02   作者:qq_35937045  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)多文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

文件上傳是開(kāi)發(fā)中十分常見(jiàn)的功能,在servlet3.0之前,實(shí)現(xiàn)文件上傳需要使用一些插件技術(shù),比如:

  • commons-fileupload
  • smartupload

但是在3.0之后servlet內(nèi)部集成文件上傳的技術(shù)(multipart),有關(guān)servlet3.0文件上傳的實(shí)現(xiàn)過(guò)程如下:

1、表單的提交方式必須設(shè)置為post
2、表單的enctype必須設(shè)置為multipart/form-data(使用二進(jìn)制流的方式提交數(shù)據(jù))
3、在servlet類(lèi)中加上@MultipartConfig注解

包含四個(gè)可設(shè)置的參數(shù)分別為:

  • fileSizeThreshold 內(nèi)存緩存的最大空間(當(dāng)上傳文件的字節(jié)數(shù)達(dá)到該值后使用臨時(shí)文件緩存)
  • location 臨時(shí)文件的存儲(chǔ)目錄
  • maxFileSize 允許上傳的單個(gè)文件的最大限制
  • maxRequestSize 表單允許提交的總字節(jié)數(shù)

頁(yè)面端

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
 <form action="upload3" method="post" enctype="multipart/form-data">
  <input type="text" name="fname" placeholder="請(qǐng)輸入文件名" /> <br />
  <input type="file" name="myfile" multiple/>
  <button>上傳</button>
 </form>
</body>
</html>

服務(wù)端

package com.softeem.servlet;

import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.UUID;

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;

@WebServlet({ "/UploadServlet", "/upload" })
@MultipartConfig(
  //設(shè)置內(nèi)存緩存的最大空間(當(dāng)上傳文件的字節(jié)數(shù)達(dá)到該值后使用臨時(shí)文件緩存)
  fileSizeThreshold=1024*1024,
  //設(shè)置臨時(shí)文件的存儲(chǔ)目錄
  location="d:/temp",
  //設(shè)置允許上傳的單個(gè)文件的最大限制
  maxFileSize=1024*1024*200,
  //設(shè)置表單的最大允許提交的字節(jié)數(shù)
  maxRequestSize=1024*1024*500
  )
public class UploadServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
       
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  
  String basePath = "d:/myfileserver";
  Collection<Part> parts = request.getParts();
  for(Part part:parts){
   if(part.getSize() > 0){
    String fname = part.getSubmittedFileName();
    //隨機(jī)產(chǎn)生一個(gè)uuid作為文件名稱(chēng)
    String uuid = UUID.randomUUID().toString();
    //獲取文件后綴
    String suffix = fname.substring(fname.lastIndexOf("."));
    //組合uuid和文件后綴成為新的文件名稱(chēng)
    fname = uuid+suffix;
    
    part.write(basePath+File.separator+fname);
   }
  }
 }
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  doGet(request, response);
 }

}

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

相關(guān)文章

  • Java中的CyclicBarrier同步屏障詳解

    Java中的CyclicBarrier同步屏障詳解

    這篇文章主要介紹了Java中的CyclicBarrier同步屏障詳解,CyclicBarrier也叫同步屏障,在JDK1.5被引入,可以讓一組線程達(dá)到一個(gè)屏障時(shí)被阻塞,直到最后一個(gè)線程達(dá)到屏障時(shí),屏障才會(huì)開(kāi)門(mén),所有被阻塞的線程才會(huì)繼續(xù)執(zhí)行,需要的朋友可以參考下
    2023-09-09
  • springcloud?gateway高級(jí)功能之集成apollo后動(dòng)態(tài)刷新路由方式

    springcloud?gateway高級(jí)功能之集成apollo后動(dòng)態(tài)刷新路由方式

    這篇文章主要介紹了springcloud?gateway高級(jí)功能之集成apollo后動(dòng)態(tài)刷新路由方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java并發(fā)容器相關(guān)知識(shí)總結(jié)

    Java并發(fā)容器相關(guān)知識(shí)總結(jié)

    今天給大家?guī)?lái)的文章是Java并發(fā)容器的相關(guān)知識(shí),文中有非常詳細(xì)的介紹,對(duì)正在學(xué)習(xí)Java并發(fā)容器的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • HashMap每次擴(kuò)容為什么是2倍

    HashMap每次擴(kuò)容為什么是2倍

    當(dāng)HashMap在初始化沒(méi)有指定容量的情況下,首次添加元素時(shí),數(shù)組的容量為16;當(dāng)超出閾值,數(shù)組容量為擴(kuò)容為之前的2倍,為什么HashMap每次擴(kuò)容都是之前的2倍?下面就介紹一下
    2024-11-11
  • Java getResource()如何獲取class文件目錄位置

    Java getResource()如何獲取class文件目錄位置

    這篇文章主要介紹了Java getResource()如何獲取class文件目錄位置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Javassist如何操作Java 字節(jié)碼

    Javassist如何操作Java 字節(jié)碼

    這篇文章主要介紹了Javassist如何操作Java 字節(jié)碼,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-09-09
  • Springboot微服務(wù)分布式框架Rouyi Cloud權(quán)限認(rèn)證(登錄流程之token解析)

    Springboot微服務(wù)分布式框架Rouyi Cloud權(quán)限認(rèn)證(登錄流程之token解析)

    這篇文章主要介紹了Springboot微服務(wù)分布式框架Rouyi Cloud權(quán)限認(rèn)證的相關(guān)知識(shí),重點(diǎn)講解下整個(gè)框架的入口,登錄流程之token解析,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • java迭代器移除元素出現(xiàn)并發(fā)修改異常的原因及解決

    java迭代器移除元素出現(xiàn)并發(fā)修改異常的原因及解決

    這篇文章主要介紹了java迭代器移除元素出現(xiàn)并發(fā)修改異常的原因及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 詳解Spring Retry實(shí)現(xiàn)原理

    詳解Spring Retry實(shí)現(xiàn)原理

    這篇文章主要介紹了詳解Spring Retry實(shí)現(xiàn)原理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • java使用GeoTools讀取shp文件并畫(huà)圖的操作代碼

    java使用GeoTools讀取shp文件并畫(huà)圖的操作代碼

    GeoTools是ArcGis地圖與java對(duì)象的橋梁,今天通過(guò)本文給大家分享java使用GeoTools讀取shp文件并畫(huà)圖,文章通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-07-07

最新評(píng)論

江山市| 安西县| 思茅市| 新疆| 霍州市| 建德市| 林州市| 宁都县| 鄂伦春自治旗| 罗城| 阿荣旗| 墨脱县| 双峰县| 鄂托克前旗| 海伦市| 台东县| 陕西省| 天全县| 禹城市| 金平| 大悟县| 屯留县| 开远市| 兰考县| 左权县| 九龙坡区| 阳谷县| 水富县| 阳信县| 万源市| 连江县| 湾仔区| 郸城县| 犍为县| 应用必备| 平果县| 新竹县| 临江市| 汶川县| 哈密市| 浦城县|