• 使用SMM框架开发企业级应用-----mvc文件上传和下载


    SpringMVC通过MultipartResolver(多部件解析器)对象实现对文件上传的支持。

    MultipartResolver是一个接口对象,需要通过它的实现类CommonsMultipartResolver来完成文件的上传工作。

    1.使用MultipartResolver对象,在XML中配置Bean.

     
      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:context="http://www.springframework.org/schema/context"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context-4.3.xsd">
          <context:annotation-config/>
         <context:component-scan base-package="com.wxy.controller"/>
         <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/jsp/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
         <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="defaultEncoding" value="UTF-8" />
             <property name="maxUploadSize" value="2097152" />
         </bean>
     </beans>
     

    2.fileUpload.jsp上传页面

     
      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <html>
      <head>
          <title>文件上传</title>
          <script>
              <%--判断是否填写上传人并已经选择上传文件--%>
              function check() {
                  var name = document.getElementById("name").value();
                  var name = document.getElementById("file").value();
    if(name==""){ alert("请填写上传人"); return false; } if(file.length==0||file==""){ alert("请选择上传文件"); return false; } return true; } </script> </head> <body> <%--enctype="multipart/form-data"采用二进制流处理表单数据--%> <form action="${pageContext.request.contextPath}/fileUpload.action" method="post" enctype="multipart/form-data" onsubmit="return check()"> 上传人:<input id="name" type="text" name="name"/><br/> 请选择文件:<input id="file" type="file" name="uploadfile" multiple="multiple"/><br/> <%--multiple属性选择多个文件上传--%> <input type="submit" value="文件上传" /> </form> </body> </html>

    3.fileDownload.jsp下载页面

     <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
     <%@ page import="java.net.URLEncoder" %>
      <html>
      <head>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          <title>文件下载</title>
     </head>
     <body>
     <a href="${pageContext.request.contextPath}/download.action?filename=<%=URLEncoder.encode("图像.txt","UTF-8")%>">文件下载</a>
     </body>
     </html>

    4.FileUploadAndDownloadController.java文件上传和下载控制器类

    复制代码
     使用SMM框架开发企业级应用----- package com.wxy.controller;
      mport org.apache.commons.io.FileUtils;
      import org.springframework.http.HttpHeaders;
      import org.springframework.http.HttpStatus;
      import org.springframework.http.MediaType;
      import org.springframework.http.ResponseEntity;
      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
     import org.springframework.web.multipart.MultipartFile; 
     import javax.servlet.http.HttpServletRequest;
     import java.io.File;
     import java.net.URLEncoder;
     import java.util.List;
     import java.util.UUID;
     
     @Controller("controller")
     public class FileUploadAndDownloadController {
         @RequestMapping("/tofileUpload")
         public String toupload(){
             return "fileUpload";
         }
         @RequestMapping("/tofiledownload")
         public String todownload(){
             return "download";
         }
         @RequestMapping("/fileUpload.action")
         public String handleFormUpload(@RequestParam("name") String name,
                                        @RequestParam("uploadfile") List<MultipartFile> uploadfile, HttpServletRequest request) {
             if (!uploadfile.isEmpty() && uploadfile.size() > 0) {
                 for (MultipartFile file : uploadfile) {
                     String originalFilename = file.getOriginalFilename();
                     String dirPath = request.getServletContext().getRealPath("/upload/");
                     File filePath = new File(dirPath);
                     if (!filePath.exists()) {
                         filePath.mkdirs();
                     }
     
                     String newFilename = name +"_" + originalFilename;
                     try {
                         file.transferTo(new File(dirPath + "_"+newFilename));
                     } catch (Exception e) {
                         e.printStackTrace();
                         return "error";
                     }
                 }
                 return "success";
             } else {
                return "error";
             }
         }
         @RequestMapping("/download.action")
         public ResponseEntity<byte[]> filedownload(HttpServletRequest request,String filename) throws Exception{
             String path = request.getServletContext().getRealPath("/upload");
             File file = new File(path+File.separator+filename);
             filename = this.getFilename(request,filename);
             HttpHeaders headers = new HttpHeaders();
            headers.setContentDispositionFormData("attachment",filename);
             headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
             return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.OK);
         }
         public String getFilename(HttpServletRequest request,String filename) throws Exception{
             String[] IEBrowserKeyWord = {"MSIE","Trident","Edge"};
            String userAgent = request.getHeader("User-Agent");
             for(String keyWord:IEBrowserKeyWord){
                 if(userAgent.contains(keyWord)){
                     return URLEncoder.encode(filename,"UTF-8");
                 }
             }
            return new String(filename.getBytes("UTF-8"),"ISO-8859-1");
        }
    }
  • 相关阅读:
    Android:使用 DownloadManager 进行版本更新
    Android:UI 沉浸式体验,适合第一屏的引导图片、预览图片。
    Android:相机适配及图片处理的一些问题
    Android: 设置 app 字体大小不跟随系统字体调整而变化
    Android: TextView 及其子类通过代码和 XML 设置字体大小的存在差异的分析
    SQLMap 学习
    我的书单
    macos
    linux BufferedImage.createGraphics()卡住不动
    Linux 中ifconfig和ip addr命令看不到ip
  • 原文地址:https://www.cnblogs.com/haohanwuyin/p/11839203.html
Copyright © 2020-2023  润新知