我已经实现了一个Spring MVC REST服务,它接受一个包含文件上传和JSON主体的多部分消息。以下是所涉及的主要类:
@RestController
public class MyController {
@Autowired
private MyService myService;
@RequestMapping(value = "/publish", method = RequestMethod.POST,
consumes = "multipart/form-data", produces = "application/json")
public PublishContentResponse publishContent(@RequestPart("json") PublishContentRequest request, @RequestPart("file") MultipartFile file) throws IOException {
PublishContentResponse response = myService.publishContent(request, file);
return response;
}
}
public class MyServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{MyConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/mypath/*"};
}
@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
registration.setMultipartConfig(getMultipartConfigElement());
}
private MultipartConfigElement getMultipartConfigElement() {
loadServletProperties();
MultipartConfigElement multipartConfigElement = new MultipartConfigElement("c:/temp/", 5242880, 20971520, 0);
return multipartConfigElement;
}
}
@Configuration
@ComponentScan
@EnableWebMvc
public class MyConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(final DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Bean
public MultipartResolver multipartResolver() {
return new StandardServletMultipartResolver();
}
}
我的问题是servlet初始化器(c:/temp/)中定义的临时位置包含。tmp文件夹,这些文件夹是在每次对该服务的请求之后创建的,并且从未被删除。在记事本中打开它们,看起来它们只包含请求中发送的JSON的纯文本副本,而不包含上传文件的字节。我一辈子都想不出如何让这些文件在处理后消失。目前,我只能在每次调用后使用fileutils.cleanDirectory(“c/:temp/”),但我对这个解决方案一点也不满意。有人知道我可以做什么来删除这些。tmp文件吗?
我最终发现,无论出于什么原因,JVM都不会垃圾收集这些文件,所以。tmp文件可以永远保存下来。尽管解决方案非常不令人满意,但我还是通过强烈建议JVM在文件上传结束时进行垃圾收集来解决这个问题
System.gc();
这将是很好的,仍然找到一个理由,为什么它不收集垃圾在第一位,但我现在放弃了这个!
我正在Spring controller中努力实现多部分文件上传。我读过很多问题,谷歌,但似乎什么都不管用。 我明白了 我的BE控制器: FE,angularJS: HTML: 还有应用程序。属性包括: 更新: 当我按照@Byeon0gam的建议从我的控制器中删除@RequestParam时,我不再会遇到这个错误,但是我的文件在控制器中是空的。虽然在FE服务中,如我所见,它不是空的:
我试图创建一个页面,用户可以张贴图像及其细节。现在,当我测试来自postman的spring boot服务时,我能够成功地在服务中获取文件。当我试图从angular5中做同样的事情时,多部分文件在服务中没有被识别,并且总是得到空数组。 我的角服务代码如下 } 我已经尝试添加标头,如multipart/form-data,并将其设置为un定义。无论哪种方式,我都收到了错误。在发布到这里之前,我已经广
问题内容: 我想从当前目录中的所有文件名中删除 test.extra 但是它抱怨没有找到file.echo是为了确保它正确列出。 问题答案: 首先使用“ sed -e”代替“ \ e” 我建议您用bash这样做
我正在尝试使用@Controller和@Request estMap使用Spring 3.1.2上传多个文件。 下面是我做的和我的配置。 格式 : 控制器方法: 我的会议: 提交表单确实会转到添加文件系统映像方法。locId 参数的数据位于此处,但“文件”参数未绑定。无论我尝试过什么参数/字段名称/参数类型的组合,它都是系统性的空值。 HttpServletRequest参数是一个org.spri
我正在使用这个音频记录和视频文件,它是工作的,但我想用OKHTTP取代它。我没弄明白。有人能帮我一下吗?
本文向大家介绍SpringMVC 文件上传配置,多文件上传,使用的MultipartFile的实例,包括了SpringMVC 文件上传配置,多文件上传,使用的MultipartFile的实例的使用技巧和注意事项,需要的朋友参考一下 基本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下如何使用SpringMVC进行表单上的文件上传以及多个文件同时上传的步骤 文件上传项目的