Uploading File Returns 403 Error - Spring MVC

前端 未结 4 1488
鱼传尺愫
鱼传尺愫 2021-01-05 02:25

In my Spring MVC project I am trying to upload a file via a simple form.

HTML Form:

4条回答
  •  轻奢々
    轻奢々 (楼主)
    2021-01-05 03:09

    The fast solution for me was the following

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ page session="false" %>
    
    
    Upload File Request Page
    
    
        
            File to upload: 
    Name:

    Press here to upload the file!

    The controller code is the following:

    package com.student.controller;
    
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.security.Principal;
    import javax.servlet.http.HttpServletRequest;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    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("/file")
    public class FileUploadController {
    
        @RequestMapping(value = "", method = RequestMethod.GET)
        public String index(ModelMap modelMap,Principal principal,HttpServletRequest request) {
            return "uploadfile";
        }
    
        @RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
        public @ResponseBody String uploadFileHandler(@RequestParam("name") String name, @RequestParam("file") MultipartFile file) {
    
            if (!file.isEmpty()) {
                try {
                    byte[] bytes = file.getBytes();
    
                    // Creating the directory to store file
                    String rootPath = System.getProperty("catalina.home");
                    File dir = new File(rootPath + File.separator + "tmpFiles");
                    if (!dir.exists())
                        dir.mkdirs();
    
                    // Create the file on server
                    File serverFile = new File(dir.getAbsolutePath()
                            + File.separator + name);
                    BufferedOutputStream stream = new BufferedOutputStream(
                            new FileOutputStream(serverFile));
                    stream.write(bytes);
                    stream.close();
    
    
    
                    return "You successfully uploaded file=" + rootPath+name;
                } catch (Exception e) {
                    return "You failed to upload " + name + " => " + e.getMessage();
                }
            } else {
                return "You failed to upload " + name
                        + " because the file was empty.";
            }
        }
    
    }
    

    I added the following code in spring dispatcher file

    
        
    
             
            
    
        
    

提交回复
热议问题