SpringMVC 文件上传(Multipart)

时间:2023-03-10 01:44:09
SpringMVC  文件上传(Multipart)

作者QQ:1095737364    QQ群:123300273     欢迎加入!

    

  平时用的上传一般是输入流和输出流上传,今天使用的是transferTo方法:

    Multipart请求是在控制器实例中实现一个Multipart HttpServletRequest接口的request对象,MultipartHttpServletRequest接口简单地扩展了默认的HttpServletRequest接口,并提供一些用来处理请求文件的方法。

transferTo方法实现文件是通过复制文件来实现,下面是一些Multipart的一些方法:

      • getSize():获得文件长度,以此决定允许上传的文件大小。
      • isEmpty():判断上传文件是否为空文件,以此决定是否拒绝空文件。
      • getInputStream():将文件读取为java.io.InputStream流对象。
      • getContentType():获得文件类型,以此决定允许上传的文件类型。
      • transferTo(dest):将上传文件写到服务器上指定的文件。

   

 下面是具体的示例:  

引入jar包

<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>

SpringMVC 下加入以下代码

<!-- 需要文件上传功能时,启用以下配置 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxInMemorySize">
<value>1638400</value>
</property>
</bean>

jsp前端:

<input name="upgradeFile" type="file">

Java后台:

@RequestMapping(value = "/upgrade", method = RequestMethod.POST)
public ModelAndView versionUpgrade(@RequestParam(value="upgradeFile",required=false) MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws Exception {
//保存上传
String contextpath=request.getContextPath();
String webappPath=request.getSession().getServletContext().getRealPath("/");
OutputStream out = null;
InputStream fileInput=null;
try{
if(file!=null){
String originalName=file.getOriginalFilename();
String type=file.getContentType();
String filepath=request.getServletContext().getRealPath("/")+uploadDir+"/"+originalName;
filepath= Utils.format(filepath);
File files=new File(filepath);
//打印查看上传路径
System.out.println(filepath);
if(!files.getParentFile().exists()){
files.getParentFile().mkdirs();
}
file.transferTo(files);
}
}catch (Exception e){
}finally{
try {
if(out!=null){
out.close();
}
if(fileInput!=null){
fileInput.close();
}
} catch (IOException e) {
}
}