Java 理解Spring MVC中的MultipartFile transferTo()方法
我使用SpringFramework的MultipartFile允许用户将图片上传到配置文件。我在扩展AbstractAnnotationConfigDispatcherServletInitializer的servlet初始值设定项类中配置了DispatcherServlet。在该类中,我重写了customizeRegistration()方法,如下所示:Java 理解Spring MVC中的MultipartFile transferTo()方法,java,spring,Java,Spring,我使用SpringFramework的MultipartFile允许用户将图片上传到配置文件。我在扩展AbstractAnnotationConfigDispatcherServletInitializer的servlet初始值设定项类中配置了DispatcherServlet。在该类中,我重写了customizeRegistration()方法,如下所示: @Override protected void customizeRegistration(Dynamic registration)
@Override
protected void customizeRegistration(Dynamic registration) {
registration.setMultipartConfig(new MultipartConfigElement("/tmp/practicewellness/uploads", 2097152, 4194304, 0));
}
MultipartFile的transferTo()方法在文件系统中调用一个文件位置,上传的文件将临时写入该位置。这个位置能在任何地方吗?当我在方法中使用以下位置时:
profilePicture.transferTo(new File("tmp/practicewellness/" + employee.getUsername() + ".jpg"));
。。。我得到以下错误:
Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [C:\Users\kyle\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\work\Catalina\localhost\practicewellness\tmp\practicewellness\uploads] is not valid
所以我可以看到它正在我的一个Eclipse插件的深处寻找这个文件位置。我不明白它为什么看起来在那里。当我看那里时,“tmp”目录不在那里。但是不管怎样,我可以进入那个插件并在那里创建目录吗?还是有更好的方法来解决这个问题 我使用Spring mvc上传了文件,但从未使用transferTo(),我只是假设您的问题是由于“不存在指定路径”,因为不会有以.jpg结尾的路径。像这样试试
String path = "/tmp/practicewellness/";
File dirPath = new File(path);
if (!dirPath.exists()) {
dirPath.mkdirs();
}
然后执行transferTo()代码。
另外,不要像以前那样直接设置路径。因为您是在spring中完成的,所以我假设您希望文件夹位于项目路径中,而不是eclipse的元数据路径中。所以,改变你的道路
String path = request.getSession().getServletContext().getRealPath("/tmp/practicewellness/");
它将使用mkdir在项目的Webapp文件夹中创建一个文件夹。如果要保存每个用户的文件,可以使用以下路径为每个用户创建文件夹
String path = request.getSession().getServletContext().getRealPath("/tmp/practicewellness")+"/"+employee.getUsername()+"/";
那条路存在吗?如果您想在文件夹不存在的情况下创建该文件夹,您必须使用mkdirI,抱歉没有将其标记为答案。我没有尝试过你的解决方案,因为我正在放弃添加文件上载功能。这是一个复杂的层次,作为一个新手,我还没有准备好去实现它。但是我想把这个问题留给其他可能有同样问题的人。没问题,凯尔。上传功能不是什么大问题,如果您需要任何帮助或在SpringMVC中上传文件的教程示例,请随时询问。