apache_fileupload实现文件上传_上传多个文件

1、导包

核心类:

DiskFileItemFactory – 设置磁盘空间,保存临时文件。只是一个具类。

ServletFileUpload  - 文件上传的核心类,此类接收request,并解析reqeust。

2、设置表单为post,且enctype为multipart/form-data,传递的是字节码

  //req.getParameter("txt");//返回的是null

1 <form action=‘<c:url value="/UpLoad"></c:url>‘ method="post" enctype="multipart/form-data">
2 File:<input type="file" name="file" /><br/>
3 <input type="submit" value="上传" />
4 </form>

3、Demo    /Upload

 1 request.setCharacterEncoding("utf-8");
 2         //获取项目的绝对地址
 3         String filepath= getServletContext().getRealPath("/file");
 4         String fileTemp=getServletContext().getRealPath("/temp");
 5         //1、声明工厂类,用于在指定磁盘上设置一个临时目录
 6         /*
 7          * 第一个参数:sizeThreadHold - 设置缓存(内存)保存多少字节数据,默认为10K
 8          *                如果一个文件没有大于10K,则直接使用内存直接保存成文件就可以了。
 9          *              如果一个文件大于10K,就需要将文件先保存到临时目录中去。
10          * 第二个参数 File 是指临时目录位置
11          * 或者无参函数
12          * disk.setSizeThreshold(sizeThreshold);
13          * disk.setRepository(repository)
14          * */
15         DiskFileItemFactory disk=new DiskFileItemFactory(1024*10, new File(fileTemp));
16         //2、声明,接收上面的临时目录
17         ServletFileUpload upload=new ServletFileUpload(disk);
18         //3、解析request
19         try {
20             //存储文件信息
21             List<Map<String, String>> imgs=new ArrayList<Map<String,String>>();
22
23             List<FileItem> list=upload.parseRequest(request);
24             //遍历多个上传文件,如果只有一个上传文件可以用list.get(0)获得
25             for(FileItem item:list)
26             {
27                 Map<String, String> map=new HashMap<String, String>();
28
29                 String fileType= item.getContentType();
30                 if(fileType.contains("image/"))
31                 {
32                     //获取文件名,getFieldName获得全路径
33                     String fileName=item.getName();
34                     fileName=fileName.substring(fileName.lastIndexOf("\\")+1);
35                     //获取扩展名
36                     String extName=fileName.substring(fileName.lastIndexOf("."));
37                     fileName=UUID.randomUUID().toString().replace("-", "")+extName;    //组成新文件名
38
39                     InputStream in= item.getInputStream();
40                     int size=in.available();//获取文件大小
41                     FileUtils.copyInputStreamToFile(in, new File(filepath+"/"+fileName));//使用工具类copy文件到流中
42
43                     map.put("name", fileName);
44                     map.put("size", ""+size);
45                     map.put("type",fileType);
46
47                     imgs.add(map);
48                     item.delete();//删除缓存中缓存
49                 }
50                 request.setAttribute("list", imgs);
51                 request.getRequestDispatcher("/show.jsp").forward(request, response);
52             }
53
54         } catch (Exception e) {
55             e.printStackTrace();
56         }
57
58     }
时间: 2024-08-06 23:30:11

apache_fileupload实现文件上传_上传多个文件的相关文章

Android06_getpost提交_文件上传_多线程下载

提交数据有中文的话,一定要用URLEncoder进行编码 1,Get方式提交数据 1.1案例:发送QQ账号和密码 ①把信息通过网络请求发送到服务器 ②在服务端数据库查询账号密码是否存在 ③服务器返回具体的信息 1.1.1,Web端的实现 ①创建一个Servlet接收客户端请求 ②获取请求数据 ③封装成对象传入数据库中(因为主要是练习Android的网络请求,所以这里可以简化一下,直接判断两个数据是否相等) ④查询数据库返回结果 //通过response对象返回结果,response.getOut

AFNetworking框架_上传文件或图像server

的文本 XXXXXXXXXX在自己的论点更填写 - (void)uploadImageWithImage:(NSString *)imagePath { //上传其它所需參数 NSString *userId=XXXXXXXXXXX; NSString *token=XXXXXXXXXXX; //上传请求POST AFHTTPClient *client=[AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@""]]; NSStri

AFNetworking框架_上传文件或图片到服务器

文中的 XXXXXXXXXX更具你自己的参数填写 - (void)uploadImageWithImage:(NSString *)imagePath { //上传其他所需参数 NSString *userId=XXXXXXXXXXX; NSString *token=XXXXXXXXXXX; //上传请求POST AFHTTPClient *client=[AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@""]]; NSStr

文件或资源的上传和下载

1.文件的上传 [1] 简介 > 将一个客户端的本地的文件发送到服务器中保存. > 上传文件是通过流的形式将文件发送给服务器. [2] 表单的设置 > 向服务器上传一个文件时,表单要使用post请求. > 表单的默认属性enctype="application/x-www-form-urlencoded" - 这个属性的意思是请求体中的内容将会使用URL编码 > 上传文件的表单enctype需要设置为 multipart/form-data - multi

PHP之文件的锁定、上传与下载

小结文件的锁定机制.上传和下载 1.文件锁定 现在都在讲究什么分布式.并发等,实际上文件的操作也是并发的,在网络环境下,多个用户在同一时刻访问页面,对同一服务器上的同一文件进行着读取,如果,这个用户刚好读到一半,另一个用户就写入了消息,那么前一个用户读到的就是错误数据,在数据库里面好像是称为脏数据,而如果某用户写到一半时,另一用户也对该文件进行写操作,那么就造成了写入数据的混乱和错误,因此才php有一个锁机制,类似于数据库的锁,当某用户在对文件操作时就加上某种锁,使得在同一时间其他用户不能对该文

导出EXCEL上传 服务器 添加压缩包,获取文件 大小

package net.joystart.excelTask; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; import ja

golang gin框架中实现大文件的流式上传

一般来说,通过c.Request.FormFile()获取文件的时候,所有内容都全部读到了内存.如果是个巨大的文件,则可能内存会爆掉:且,有的时候我们需要一边上传一边处理. 以下的代码实现了大文件流式上传. 还非常不完美,但是可以作为参考: upload.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>up

数往知来 JQuery 图片上传_水印 &lt;二十二&gt;

一.图片上传  :enctype='multipart/form-date 首先在进行文件上传时,添加form表单中的enctype属性指定enctype='multipart/form-date', 文件数据发送给服务端,并不是把文件路径发送给服务端了,它会随机生成一个分割字符串, 把每一个表单元素分割开 <form method='post' action='' enctype='multipart/form-date'> //这里的enctype是提交请求报文的报文体的一种编码格式, 默

Fiddler小技巧-测试上传文件接口&多参数并传情况

写了多年的API了,fidder还真是方便至极相对于postman来说. 两种常用方式: 抓包:app通过代理方式,就可以在pc端看到fidder的请求了 因为会监控好多跟我们需要的没关系的HTTP请求, 就要开启过滤了 主动调试API&上传文件参数&其它参数 拷贝点击"upload file"上传之后自动生成的body然后修改: ---------------------------acebdf13572468 Content-Disposition: form-da