我正在尝试使用spring
上传文件。下面是我的代码我是如何工作的
但如果我尝试使用它,我会得到response
:
HTTP状态400 - 必需的MultipartFile参数'file'不存在
我不知道错误是什么。
我使用高级休息客户端进行测试,我将文件作为附件上传。
我的Javacode:
@RequestMapping(value = "/upload",headers = "Content-Type=multipart/form-data", method = RequestMethod.POST)
@ResponseBody
public String upload(@RequestParam("file") MultipartFile file)
{
String name= "test.xlsx";
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
BufferedOutputStream stream =
new BufferedOutputStream(new FileOutputStream(new File(name)));
stream.write(bytes);
stream.close();
return "You successfully uploaded " + name + "!";
} catch (Exception e) {
return "You failed to upload " + name + " => " + e.getMessage();
}
} else {
return "You failed to upload " + name + " because the file was empty.";
}
}
答案 0 :(得分:7)
Spring需要
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
bean来处理文件上传。
您应该在application context
文件中注册此bean。
Content-Type也应该有效。在您的情况下enctype="multipart/form-data"
<强> EDIT1:强>
您可以将上传和内存大小赋予bean属性:
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- max upload size in bytes -->
<property name="maxUploadSize" value="20971520" /> <!-- 20MB -->
<!-- max size of file in memory (in bytes) -->
<property name="maxInMemorySize" value="1048576" /> <!-- 1MB -->
</bean>
答案 1 :(得分:2)
答案 2 :(得分:0)
在我写入参数&#34; file&#34;的输入框名称后,它对我有用。当我在Krajee bootstrap输入文件示例中已经很好地配置了bean id(&#34; https://github.com/kartik-v/bootstrap-fileinput&#34;)。