SpringMCV(八):文件上传(spring 上传文件)

  本篇文章为你整理了SpringMCV(八):文件上传(spring 上传文件)的详细内容,包含有springmvc 上传文件 spring 上传文件 spring实现文件上传 springmvc上传大文件 SpringMCV(八):文件上传,希望能帮助你了解 SpringMCV(八):文件上传。

  实际上我们需要的包有commons-fileupload和commons-io,但我们使用Maven时导入commons-fileupload包,Maven会自动帮我们导入它的依赖包commons-io。

  二、前端建立一个文件上传的表单

  

 form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data" 

 

   input type="file" accept="image/*" name="file"/

   input type="submit" value="上传文件"/

   /form

 

  enctype时设置被提交数据的编码,enctype="multipart/form-data"是设置文件以二进制数据发送给服务器。

   input type="file" accept="image/*" type="file"说明是要选择文件进行上传,accept="image/*"表示上传文件的MIME类型,这里表示的是各种类型的图片文件。

  三、SpringMVC中配置MultipartResolver

  SpringMVC能够支持文件上传的操作,但是需要在上下文中对MultipartResolver进行配置,具体配置如下:

  

 !--文件上传-- 

 

   bean id="multipartResolver"

   !--请求的编码格式,默认为ISO-8859-1--

   property name="defaultEncoding" value="utf-8"/

   上传文件大小上限,单位为字节(byte),这里是10M和40K

   第二个其实是一个阈值,小于此值文件会存在内存中,大于此值文件会存在磁盘上,所以理解成上传文件的最小上限没有问题

   property name="maxUploadSize" value="10485760"/

   property name="maxInMemorySize" value="40960"/

   /bean

 

  四、编写文件上传的controller,这里有两种上传方法

  方法一:

  

 @RequestMapping("/upload")

 

   @ResponseBody

   public String fileUpload(@RequestParam("file") CommonsMultipartFile file , HttpServletRequest request) throws IOException {

   //上传的文件名

   String uploadFileName = file.getOriginalFilename();

   //判断文件名是否为空

   if ("".equals(uploadFileName)){

   return null;

   //上传路径保存设置

   String path = request.getServletContext().getRealPath("/upload");

   //如果路径不存在,创建一个

   File realPath = new File(path);

   if (!realPath.exists()){

   realPath.mkdir();

   InputStream is = file.getInputStream(); //文件输入流

   OutputStream os = new FileOutputStream(new File(realPath,uploadFileName)); //文件输出流

   //读取写出

   int len=0;

   byte[] buffer = new byte[1024];

   while ((len=is.read(buffer))!=-1){

   os.write(buffer,0,len);

   os.flush();

   os.close();

   is.close();

   return "/upload/" + uploadFileName;

   }

 

  方法二:

  

 @RequestMapping("/upload2")

 

   @ResponseBody

   public String fileUpload2(@RequestParam("file") CommonsMultipartFile file, HttpServletRequest request) throws IOException {

   //上传路径保存设置

   String path = request.getServletContext().getRealPath("/upload");

   File realPath = new File(path);

   if (!realPath.exists()){

   realPath.mkdir();

   //上传的文件名

   String uploadFileName = file.getOriginalFilename();

   //通过CommonsMultipartFile的方法直接写文件(

   file.transferTo(new File(realPath +"/"+ uploadFileName));

   return "/upload/" + uploadFileName;

   }

 

  注意: 这里如果上传路径保存设置是多级目录,就需要用File.mkdirs()。

  

  (本文仅作个人学习记录用,如有纰漏敬请指正)

  以上就是SpringMCV(八):文件上传(spring 上传文件)的详细内容,想要了解更多 SpringMCV(八):文件上传的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: