Spring MVC 每次上传都会在 tomcat 的主目录中上传文件,但不会被删除。
有两个问题,
- Tomcat 进程对 PROD 中的 tomcat 主目录没有写权限。所以会得到权限被拒绝的错误
- 如果我们授予权限,那么将创建大量文件但永远不会删除。
有什么方法可以将文件作为 byte[] 从 JSP 上传到 Spring MVC Controller
最佳答案
一种解决方案是扩展 AbstractAnnotationConfigDispatcherServletInitializer
覆盖其继承的 customizeRegistration()
方法。
MultipartConfigElement
的对象可以提供类以配置与多部分相关的行为:
import javax.servlet.MultipartConfigElement;
import javax.servlet.ServletRegistration;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class SpringMvcInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
. . .
@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
registration.setMultipartConfig(
new MultipartConfigElement(LOCATION, MAX_FILE_SIZE, MAX_REQUEST_SIZE, FILE_SIZE_THRESHOLD)
);
}
private static final String LOCATION = "C:/temp/"; // Temporary location where files will be stored
private static final long MAX_FILE_SIZE = 1024 * 1024 * 5; // 5MB : Max file size.
// Beyond that size spring will throw exception.
private static final long MAX_REQUEST_SIZE = 1024 * 1024 * 20; // 20MB : Total request size containing Multi part.
private static final int FILE_SIZE_THRESHOLD = 0; // Size threshold after which files will be written to disk
}
参见:Spring MVC 4 File Upload Example using Servlet 3 MultiPartConfigElement
关于java - Spring MVC 上传文件到Tomcat家目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41259515/