Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 理解Spring MVC中的MultipartFile transferTo()方法_Java_Spring - Fatal编程技术网

Java 理解Spring MVC中的MultipartFile transferTo()方法

Java 理解Spring MVC中的MultipartFile transferTo()方法,java,spring,Java,Spring,我使用SpringFramework的MultipartFile允许用户将图片上传到配置文件。我在扩展AbstractAnnotationConfigDispatcherServletInitializer的servlet初始值设定项类中配置了DispatcherServlet。在该类中,我重写了customizeRegistration()方法,如下所示: @Override protected void customizeRegistration(Dynamic registration)

我使用SpringFramework的MultipartFile允许用户将图片上传到配置文件。我在扩展AbstractAnnotationConfigDispatcherServletInitializer的servlet初始值设定项类中配置了DispatcherServlet。在该类中,我重写了customizeRegistration()方法,如下所示:

@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中上传文件的教程示例,请随时询问。