Spring 中Apache Commons上传文件

在用Apache Commons完成文件上传功能需有的几步:

1、导入两个架包:commons-fileupload.jar和commons-io.jar

maven中:

 1 <dependency>
 2         <groupId>commons-fileupload</groupId>
 3         <artifactId>commons-fileupload</artifactId>
 4         <version>1.3</version>
 5     </dependency>
 6
 7     <dependency>
 8         <groupId>commons-io</groupId>
 9         <artifactId>commons-io</artifactId>
10         <version>2.4</version>
11     </dependency>

2、修改配置文件,在spring-servlet中添加一个bean,代码如下:

 1 <!-- 处理上传文件 -->
 2     <bean id="multipartResolver"
 3         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 4         <!-- set the max upload size100MB -->
 5
 6         <!-- 设置最大文件大小 -->
 7         <property name="maxUploadSize">
 8             <value>104857600</value>
 9         </property>
10         <!-- 设置最大内存大小 -->
11         <property name="maxInMemorySize">
12             <value>10240</value>
13         </property>
14         <!-- 设置上传后的目录名 -->
15         <property name="uploadTempDir">
16         <value>"./upload/"</value>
17         </property>
18     </bean>
19     

注意这里配置的上传的目录名是临时的,并不是上传文件后文件所在的位置,这里只是缓存用的。文件上传后真正的位置要在Controller中指出

3、jsp页面和Controller中的内容

jsp页面:

1 <form action="./handleUploadData" method="post" enctype="multipart/form-data">
2    文件名:<input type="text" name="name"><br>
3           <input type="file" name="file">
4 <input type="submit" class="btn btn-primary" value="上传">
5 </form>

这里的文件名是在为了在保存上传文件时便于区分文件,上传的文件已用户输入的文件名显示

Controller:

 1  private ServletContext servletContext;
 2
 3     @Override
 4     public void setServletContext(ServletContext context){
 5         this.servletContext =context;
 6     }
 7
 8     @RequestMapping("**/handleUploadData")
 9     //在上传时,@RequestParam("file")必须加,不然就会出现错误
10     public String handleUploadData(String name,@RequestParam("file") CommonsMultipartFile file){
11
12         if(!file.isEmpty()){
13             String path=this.servletContext.getRealPath("/upload/");  //获取本地存储路径
14
15             String fileName=file.getOriginalFilename();
16
17             String fileType=fileName.substring(fileName.lastIndexOf("."));  //获取上传文件的类型
18             System.out.println(fileType);
19             File file2=new File(path,name+fileType);  //新建一个文件
20
21
22
23             try {
24                 file.getFileItem().write(file2);  //将上传的文件写入新的文件中
25             } catch (Exception e) {
26                 // TODO Auto-generated catch block
27                 e.printStackTrace();
28             }
29             return "upload_ok";
30         }
31         else{
32             return "upload_error";
33         }
34     }

Spring 中Apache Commons上传文件

时间: 2024-08-11 09:50:34

Spring 中Apache Commons上传文件的相关文章

php+apache 解决上传文件过大问题

php+apache 解决上传文件过大问题 博客分类: php PHPApache 用php+apache上传文件的时候,由于文件过大,容易导致上传失败,解决办法: 修改php.ini中: upload_max_filesize  2m  即允许上传文件大小的最大值.默认为2M ,大小可以根据你                              的需要进行修改 post_max_size  20m  指通过表单POST给PHP的所能接收的最大值,包括表单里的所有             

Linux中ftp不能上传文件/目录的解决办法

在linux中不能上传文件或文件夹最多的问题就是权限问题,但有时也不一定是权限问题了,像我就是空间不够用了,下面我来总结一些ftp不能上传文件/目录的解决办法 在排除用户组和权限等问题后,最可能引起ftp下文件无法上传并经常被忽略的因素就是硬盘空间已满,而导致硬盘空间满的问题多数是日志文件所占用的,例如mysql的日志会在不知不觉中变得十分庞大,直至占满剩余的硬盘空间. 解决办法: 1.定期手动清理或使用脚本清理mysql日志或其他相关日志文件. 2.关闭mysql日志(不推荐) 上面是空间有问

本地虚拟机中匿名ftp上传文件失败的问题

在10.10.50.230中新建了一个匿名的ftp服务器,结果在10.10.50.241中上传文件时提示: local: README.txt remote: /var/ftp/pub/upload 227 Entering Passive Mode (10,10,50,230,117,8). 553 Could not create file.   由于搭建步骤是完全按照标准文档建立的,vsftp.conf的设置应该没有问题,检查:getsebool -a|grep ftp 发现: allow

Spring Boot 使用 ServletFileUpload上传文件失败,upload.parseRequest(request)为空

使用Apache Commons FileUpload组件上传文件时总是返回null,调试发现ServletFileUpload对象为空,在Spring Boot中有默认的文件上传组件,在使用ServletFileUpload时需要关闭Spring Boot的默认配置 , 禁用MultipartResolverSpring提供的默认值 1.0在配置文件中添加 spring.http.multipart.enabled=false 2.0在配置文件中添加 spring.servlet.multip

【Spring Boot】关于上传文件例子的剖析

目录 Spring Boot 上传文件 功能实现 增加ControllerFileUploadController 增加ServiceStorageService 增加一个Thymeleaf页面 修改一些简单的配置application.properties 修改Spring Boot Application类 官网没有说明其他的Service类的定义 至此,运行项目.可以再上传与下载文件 介绍@ConfigurationProperties的用法 上面例子的 @ConfigurationPro

winform中进行post上传文件

winform中要上传文件到远程的服务器上面,我在本地用的是post方式传递数据,用的是HTTP协议,具体代码如下: 下面的代码就是一个上传的方法,参数需要路径和文件路径就可以了,我本地winform只需要提交post请求就可以了,止于对于post请求如何处理,那就是远程服务端的事情了. private string uploadFile(string uriAddress, string uploadfilePath) { HxSpecCore.SpectrumSet ss = new Spe

shell中利用ftp 上传文件夹功能

我们知道ftp 只能用来上传或者下载文件,一次单个或者多个,怎么实现将文件夹的上传和下载呢? 可以利用先在remote ip上建立一个相同的文件夹目录,然后将文件放到各自的目录中去 1.循环遍历出要上传的文件夹中的文件夹目录 2.遍历出每个文件夹下的文件 3.逐一上传文件 ftp 命令 图中有众多的交互,我们不想让他显示这些交互 可以使用参数 屏蔽掉 ftp [-v] [-n] [-i] [-d] [-g] [-s:filename] [-a] [-w:windowsize] [computer

Servlet中服务器端接收上传文件操作

最近老大分了一个任务,客户端使用C#实现了文件上传,要求我实现服务器端的文件接收保存到本地并且接收成功返回给客户端一个标识.在网上看了一下,大多数都是客户端的文件上传操作,很少有写服务端的处理,借此次机会,分享一下自己在服务端实现的处理逻辑.废话不多说,直接上代码 public class ReciveServlet extends HttpServlet { private static final long serialVersionUID = 1Lpublic ReciveServlet(

ssm项目中常用的上传文件

在项目中,上传文件一般是必不可少的,所以今天学到新的上传方式,就干脆将学习过的上传方式记录一下 一.表单直接上传图片 表单头要设置 <form action="" method="post" enctype="multipart/form-data"> 元素 <input type="file" name="dwfile" > 后端代码 @RequestMapping(value=&