SpringMVC使用JSP通过Ajax上传文件到后台

1、
SpringMVC的配置文件中一定要有文件配置:

<!-- 当使用文件上传时,需要打开该注释,需要扫描包 -->
     <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="2048000000"></property>
    </bean>

在这里插入图片描述
2、前台JSP的代码;
//注意引入JQuery.js文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<script src="js/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
    function UUploadedFile() {
    
    
        var formData = new FormData();
        formData.append('file', $('#UUploadedFile')[0].files[0]);
        $.ajax({
    
    
            async: false,//要求同步 不是不需看你的需求
            url : "${ctxPath }material/TestuploadFile.do",
            type : 'POST',
            data : formData,
            dataType: "json",
            processData : false,  //必须false才会避开jQuery对 formdata 的默认处理   
            contentType : false,  //必须false才会自动加上正确的Content-Type
            success: function (data) {
    
    
                if (data.success ) {
    
    
                   alert("上传完成!");
                }else{
    
    
                    alert("上传失败!");
                }
            },
        });
    }
</script>
<body>
<input type="file" id="UUploadedFile"  name="fileupload"  onchange="UUploadedFile()">
</body>
</html>

3、后端的Controller接收请求的代码:

引用

import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.MultipartFile;
@RequestMapping(value = "/TestuploadFile.do")
    @ResponseBody
    public Map<String, Object> TestuploadFile(HttpServletRequest request){
    
    
        Map<String, Object> modelMap=new HashMap<String, Object>();
        try {
    
    
            MultipartHttpServletRequest mpRequest = (MultipartHttpServletRequest) request;
            MultipartFile file = mpRequest.getFile("file");
            long fileSize = file.getSize();//获取文件大小
            if (fileSize <= 0) {
    
    
                modelMap.put(SUCCESS, false);
                modelMap.put(MESSAGE, "上传失败!上传的文件为空!");
                return modelMap;
            }
            if (fileSize > 200 * 1024 * 1024) {
    
    //限制上传文件大小为200M
                modelMap.put(SUCCESS, false);
                modelMap.put(MESSAGE, "上传失败!上传的文件大小超出了限制!");
                return modelMap;
            }
            InputStream in = file.getInputStream();//读取上传的文件流
            OutputStream out = new FileOutputStream("D:/"+file.getOriginalFilename());
            File outFile=new File("D:/"+file.getOriginalFilename());//把文件输出到D盘下
            byte[] buffer = new byte[1024];
            int length;
            while ((length = in.read(buffer)) > 0) {
    
    
                out.write(buffer, 0, length);
            }
            in.close();
            out.close();
            if(outFile.exists()){
    
    //判断文件是否存在
                modelMap.put(SUCCESS, true);
                modelMap.put(MESSAGE, "上传完成!");
            }else {
    
    
                modelMap.put(SUCCESS, false);
                modelMap.put(MESSAGE, "上传失败!");
                return modelMap;
            }
        }  catch (IOException e) {
    
    
            modelMap.put(SUCCESS, false);
            modelMap.put(MESSAGE, "上传失败!");
            return modelMap;
        }
        return modelMap;
    }

猜你喜欢

转载自blog.csdn.net/qq_41033385/article/details/105285824