好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java实现多文件上传功能

文件上传是开发中十分常见的功能,在servlet3.0之前,实现文件上传需要使用一些插件技术,比如:

commons-fileupload smartupload

但是在3.0之后servlet内部集成文件上传的技术(multipart),有关servlet3.0文件上传的实现过程如下:

1、表单的提交方式必须设置为post
2、表单的enctype必须设置为multipart/form-data(使用二进制流的方式提交数据)
3、在servlet类中加上@MultipartConfig注解

包含四个可设置的参数分别为:

fileSizeThreshold 内存缓存的最大空间(当上传文件的字节数达到该值后使用临时文件缓存) location 临时文件的存储目录 maxFileSize 允许上传的单个文件的最大限制 maxRequestSize 表单允许提交的总字节数

页面端

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<!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 = "请输入文件名" /> < br />

   < input type = "file" name = "myfile" multiple/>

   < button >上传</ button >

  </ form >

</ body >

</ html >

服务端

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

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 (

   //设置内存缓存的最大空间(当上传文件的字节数达到该值后使用临时文件缓存)

   fileSizeThreshold= 1024 * 1024 ,

   //设置临时文件的存储目录

   location= "d:/temp" ,

   //设置允许上传的单个文件的最大限制

   maxFileSize= 1024 * 1024 * 200 ,

   //设置表单的最大允许提交的字节数

   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();

     //随机产生一个uuid作为文件名称

     String uuid = UUID.randomUUID().toString();

     //获取文件后缀

     String suffix = fname.substring(fname.lastIndexOf( "." ));

     //组合uuid和文件后缀成为新的文件名称

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

  }

 

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

原文链接:https://blog.csdn.net/qq_35937045/article/details/100182972

查看更多关于Java实现多文件上传功能的详细内容...

  阅读:23次