Home  >  Article  >  Web Front-end  >  SpringMvc file upload and download

SpringMvc file upload and download

一个新手
一个新手Original
2017-10-09 10:11:191474browse

1. First import the jar package:

2. Then, add the upload and download configuration files in applicationContext.xml, as follows:


<!-- 文件上传的配置 -->  
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">     
       <!-- 指定所上传文件的总大小不能超过200KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->     
       <property name="maxUploadSize" value="200000"/>     
   </bean>     
       
   <!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 -->     
   <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">     
       <property name="exceptionMappings">     
           <props>     
               <!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到WebContent目录下的error.jsp页面 -->     
               <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error</prop>     
           </props>     
       </property>     
   </bean>

3. Okay, the most basic configuration is enough. Next, the jsp page: upload.jsp


1 <form action="upload.do" method="post" enctype="multipart/form-data">
2 文件1: <input type="file" name="myfiles"/><br/>
3 文件2: <input type="file" name="myfiles"/><br/>
4 文件3: <input type="file" name="myfiles"/><br/>
5 <input type="submit" value="上传">
6 </form>

4. Controller The corresponding java code in:

@RequestMapping("/upload.do")  
    public String upload(@RequestParam MultipartFile[] myfiles,HttpServletRequest request) throws IOException {  
        for(MultipartFile file : myfiles){     
            //此处MultipartFile[]表明是多文件,如果是单文件MultipartFile就行了  
            if(file.isEmpty()){   
                System.out.println("文件未上传!");  
            }  
            else{  
                //得到上传的文件名  
                String fileName = file.getOriginalFilename();  
                //得到服务器项目发布运行所在地址  
                String path1 = request.getSession().getServletContext().getRealPath("image")+File.separator;  
                //  此处未使用UUID来生成唯一标识,用日期做为标识  
                String path = path1+ new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+ fileName;  
                //查看文件上传路径,方便查找  
                System.out.println(path);  
                //把文件上传至path的路径  
                File localFile = new File(path);  
                file.transferTo(localFile);  
                }  
            }  
        return "uploadSuccess";  
    }

This way you can upload the selected pictures on the web page.

The download was successful!

5. File download download.jsp: For testing purposes here, I directly passed the username as a parameter:


a342d74c2459b749c88064982d6b750b下载5db79b134e9f6b82c0b36e0489ee08ed

6. Controller:


@RequestMapping("/download")  
    public String download(String fileName, HttpServletRequest request,  
            HttpServletResponse response) {  
        response.setCharacterEncoding("utf-8");  
        response.setContentType("multipart/form-data");  
        response.setHeader("Content-Disposition", "attachment;fileName="  
                + fileName);  
        try {  
            String path = request.getSession().getServletContext().getRealPath  
                    ("image")+File.separator;  
            InputStream inputStream = new FileInputStream(new File(path  
                    + fileName));  
  
            OutputStream os = response.getOutputStream();  
            byte[] b = new byte[2048];  
            int length;  
            while ((length = inputStream.read(b)) > 0) {  
                os.write(b, 0, length);  
            }  
  
             // 这里主要关闭。              
             os.close();  
  
            inputStream.close();  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
            //  返回值要注意,要不然就出现下面这句错误!  
            //java+getOutputStream() has already been called for this response  
        return null;  
    }

The above is the detailed content of SpringMvc file upload and download. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn