zoukankan      html  css  js  c++  java
  • 文件上传-pubsec-文件上传大小限制

    文件上传-pubsec-文件上传大小限制

    Caused by: java.lang.IllegalArgumentException: ContextPath must start with '/' and not end with '/'
    错误代码:
    server:
      servlet:
        context-path: mozq
    原因:不能以斜杠开头,也不能以斜杠结尾。
    
    # 以斜杠开头的路径表示绝对路径和域名端口号直接拼接。
    <form method="post" action="/file/upload" enctype="multipart/form-data">
        <input type="file" name="userImg">
        <input type="submit" value="提交">
    </form>
    实际请求的路径:http://localhost:8080/file/upload 报错。
    项目contextPath=/mozq
    代码:
    @RestController
    @RequestMapping("/file")
    public class FileController {
        @RequestMapping("/upload")
        public Map<String, Object> upload(MultipartFile file){
            return null;
        }
    }
    方案:
    action="file/upload" 不以斜杠开头。使用相对路径。
    
    org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (62488249) exceeds the configured maximum (10485760)
    原因:上传文件大小超过限制。
    
    @Configuration
    public class MultiPartConfig {
        /**
         * 文件上传配置
         * @return
         */
        @Bean
        public MultipartConfigElement multipartConfigElement() {
            MultipartConfigFactory factory = new MultipartConfigFactory();
            //  单个数据大小
            factory.setMaxFileSize(DataSize.of(100, DataUnit.MEGABYTES));
            /// 总上传数据大小
            factory.setMaxRequestSize(DataSize.of(300, DataUnit.MEGABYTES));
            return factory.createMultipartConfig();
        }
    }
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="js/jquery.js"></script>
        <style>
            .hide{
                display: none;
            }
            .tip{
                color: red;
                font-size: 12px;
            }
        </style>
    </head>
    <body>
    
        <form id="submitForm">
            秘钥文件:<input id="secFile" name="secFile" type="file"  onclick="hide('secFile')"><br/>
            <div id="secFileCheck" class="hide tip">请选择密钥文件</div>
            公钥文件:<input id="pubFile" name="pubFile" type="file"  onclick="hide('pubFile')"><br/>
            <div id="pubFileCheck" class="hide tip" >请选择公钥文件</div>
            密码:<input name="password" type="text" onblur="checkPassword()" onclick="hide('password')"><br/>
            <div id="passwordCheck" class="hide tip">请输入密码</div>
            <input value="提交" type="button" onclick="submitForm()" ><br/>
        </form>
    
        <script>
    
            function submitForm() {
    
                var pubFile = document.getElementById("pubFile").files[0];
                var secFile = document.getElementById("secFile").files[0];
                var password = $("input[name='password']").val();
                console.log("私钥文件:");
                console.log(secFile);
                console.log("公钥文件:");
                console.log(pubFile);
                console.log("私钥文件密码:" + password);
    
                if(checkFile("pubFile") & checkFile("secFile") & checkPassword()){
                    var formData = new FormData();
                    formData.append("pubFile", pubFile);
                    formData.append("secFile", secFile);
                    formData.append("password", password);
    
                    $.ajax({
                        url: "isPubAndSecretMatch",
                        type: "post",
                        data: formData,
                        contentType: false,
                        processData: false,
                        mimeType: "multipart/form-data",
                        success: function (data) {
                            console.log("响应数据:" + data);
                            data = JSON.parse(data);
                            if(data.flag == "success"){
                                alert("公钥和私钥匹配成功");
                            }else if(data.flag == "fail"){
                                alert(data.message);
                            }
                        }
                    })
                }
            }
    
            function hide(ele) {
                $("#" + ele + "Check").addClass("hide");
            }
    
            function checkFile(fileEleId) {
                var fileEle = document.getElementById(fileEleId).files[0];
                if(fileEle == null){
                    $("#" + fileEleId + "Check").removeClass("hide");
                    return false
                }else{
                    return true;
                }
            }
    
            function checkPassword() {
                var password = $("input[name='password']").val();
                if(password == null || password==''){
                    $("#passwordCheck").removeClass("hide");
                    return false;
                }else{
                    return true;
                }
            }
        </script>
    </body>
    </html>
    
    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.HashMap;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    import org.springframework.web.multipart.MultipartFile;
    
    
    /**
     * Service class for managing users.
     */
    @Service
    @Transactional
    public class FileService {
    	/***
    	 * 上传
    	 * @param message 记录消息
    	 * @param inputStream 文件流
    	 */
    	public HashMap<String, Object> uploadQRCode(HttpServletRequest request,MultipartFile file,String path) {
    		
    		// 检查文件是否上传过 上传成功文件名规则:用户单位_上传文件名称
    		HashMap<String, Object> uploadResult = new HashMap<String, Object>();
    		String realPath = request.getServletContext().getRealPath(path);
    		System.out.println("上传的path:"+realPath);
    		File temp = new File(realPath);
    		// 文件夹check
    		if (!temp.getParentFile().exists() && !temp.getParentFile().isDirectory()) {
    			temp.getParentFile().mkdirs();
    		}
    		try {
    			// 成功转存数据文件
    			file.transferTo(temp);
    			uploadResult.put("QRCodePath", path);
    			uploadResult.put("success", true);
    			uploadResult.put("msg", "上传成功");
    		} catch (Exception e) {
    			uploadResult.put("success", false);
    			uploadResult.put("msg", "上传失败:" + e.getMessage());
    			e.printStackTrace();
    		}
    		
    		temp = null;
    		return uploadResult;
    	}
    	
    	/***
    	 * 上传
    	 * @param message 记录消息
    	 * @param inputStream 文件流
    	 */
    	public Map<String, String> uploadFile(HttpServletRequest request,MultipartFile file,String path) {
    		// 检查文件是否上传过 上传成功文件名规则:用户单位_上传文件名称
    		Map<String, String> map= new  HashMap<String, String>();
    		String webpath=path+"/"+ file.getOriginalFilename();
    		String realPath = request.getServletContext().getRealPath(webpath);
    		File temp = new File(realPath);
    		// 文件夹check
    		if (!temp.getParentFile().exists() && !temp.getParentFile().isDirectory()) {
    			temp.getParentFile().mkdirs();
    		}
    		try {
    			// 成功转存数据文件
    			file.transferTo(temp);
    			map.put("success", "上传成功");
    		} catch (Exception e) {
    			map.put("fail", "上传失败:" + e.getMessage());
    			e.printStackTrace();
    		}
    		map.put("webpath", webpath);
    		temp = null;
    		return map;
    	}
    	
    	/***
    	 * 下载
    	 * 
    	 */
    	public String downLoad(HttpServletRequest request,HttpServletResponse response,String path){
    		String realPath = request.getServletContext().getRealPath(path);
            File file = new File(realPath);
            if(file.exists()){ //判断文件父目录是否存在
            	 response.setContentType("application/force-download");// 设置强制下载不打开
                 response.addHeader("Content-Disposition","attachment;fileName=" + file.getName());// 设置文件名
                 byte[] buffer = new byte[1024];
                 FileInputStream fis = null;
                 BufferedInputStream bis = null;
                 try {
                     fis = new FileInputStream(file);
                     bis = new BufferedInputStream(fis);
                     OutputStream os = response.getOutputStream();
                     int i = bis.read(buffer);
                     while (i != -1) {
                         os.write(buffer, 0, i);
                         i = bis.read(buffer);
                     }
                 } catch (Exception e) {
                     e.printStackTrace();
                 } finally {
                     if (bis != null) {
                         try {
                             bis.close();
                         } catch (IOException e) {
                             e.printStackTrace();
                         }
                     }
                     if (fis != null) {
                         try {
                             fis.close();
                         } catch (IOException e) {
                             e.printStackTrace();
                         }
                     }
                 }
            }
            return null;
        }
    
    	
    	
    	public Map<String, String> uploadFilePic(HttpServletRequest request,MultipartFile file,String path) {
    		// 检查文件是否上传过 上传成功文件名规则:用户单位_上传文件名称
    		Map<String, String> map= new  HashMap<String, String>();
    		String realPath = request.getServletContext().getRealPath(path);
    		File temp = new File(realPath);
    		// 文件夹check
    		if (!temp.getParentFile().exists() && !temp.getParentFile().isDirectory()) {
    			temp.getParentFile().mkdirs();
    		}
    		try {
    			// 成功转存数据文件
    			file.transferTo(temp);
    			map.put("success", "上传成功");
    		} catch (Exception e) {
    			map.put("fail", "上传失败:" + e.getMessage());
    			e.printStackTrace();
    		}
    		map.put("webpath", path);
    		temp = null;
    		return map;
    	}
    }
    
    
    import java.io.IOException;
    import java.util.Map;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    
    import org.apache.log4j.LogManager;
    import org.apache.log4j.Logger;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.multipart.MultipartFile;
    
    @Controller
    @RequestMapping("/upload")
    public class FileUploadController {
    	private static Logger  log = LogManager.getLogger(FileUploadController.class);
    	private static final String PathRoot = "SystemFile/upload/img";
    	@Resource
    	private FileService fileService;
    	
    	@RequestMapping("/save")
    	@ResponseBody
    	public Map<String, String> uploadFile(@RequestParam("file")MultipartFile file,@RequestParam("xxmc")String xxmc, HttpServletRequest request)
                throws IllegalStateException, IOException {
    		log.info("===========进入文件上传方法===============");
    		if(!file.isEmpty())
    		{	
    			Map<String, String> map=fileService.uploadFile(request,file,PathRoot+"/"+xxmc);
    			return map;
    		}
    		return null;
        }
    
    }
    
  • 相关阅读:
    Docker Swarm与Kubernetes对比分析如何选择?
    dockerMesos配置项是怎么解析的?案例详解
    Python爬虫如何提取百度搜索到的内容?案例教你
    python之urllib2是如何运用的?正确方法教你
    Python之解BS4库如何安装与使用?正确方法教你
    Python爬虫之Selenium环境如何正确配置?本文详细讲解
    Python爬虫之GET和POST请求然后正确运用详解
    Python怎么识别文字?正确 的方法详解
    Python爬虫如何获取页面内所有URL链接?本文详解
    在Java中,为什么十六进制数0xFF取反之后对应的十进制数是-256呢?
  • 原文地址:https://www.cnblogs.com/mozq/p/11722299.html
Copyright © 2011-2022 走看看