[英]MultipartFile#getContentType returns null during integration tests in Spring
[英]MultipartFile returns null every time
我正在使用此代码将图像文件发布到我的控制器,但我总是得到文件正文部分的空值。
@RequestMapping(value = "/updateprofile", method = RequestMethod.POST)
public @ResponseBody
ResponseMsg updateProfile(
@RequestHeader(value = "userid", required = false) String userid,
@RequestHeader(value = "name", required = false) String name,
@RequestHeader(value = "phone", required = false) int phone,
@RequestParam(value = "file", required = false) MultipartFile file) {
ResponseMsg responseMsg = CommonUtils.checkParam(userid, name, phone,
file);
if (responseMsg.getStatus().equalsIgnoreCase("True"))
responseMsg = userService.login(name, userid);
return responseMsg;
}
有人能帮忙吗?
当您使用multipart
您的表单字段将包含在request Stream
。 所以你必须检查它们是否是form fields
。
这是我在servlet中使用的,您可以对其进行适当的更改以在Spring-MVC
。
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart)
{
try
{
List items = upload.parseRequest(request);
Iterator iterator = items.iterator();
while (iterator.hasNext())
{
FileItem item = (FileItem) iterator.next();
if (item.isFormField()) //your code for getting form fields
{
String name = item.getFieldName();
String value = item.getString();
System.out.println(name+value);
}
if (!item.isFormField())
{
//your code for getting multipart
}
}
}
首先请发布更多代码然后我们可以找到更多,其次我认为问题是你的形式。 如果您使用Spring mvc上传文件,您的表单应如下所示: <form action="your url" method="post" enctype="multipart/form-data">
注意enctype ,它让Spring DispatchServlet知道你想上传一个文件。 你也应该检查配置文件中是否配置了MutilPartFileResovler
。
对于那些仍在努力解决这个问题的人来说,这对我有用。 以前我的input
字段定义为,
<input type="file" />
我用上面的行得到了null文件,但是当我添加了name="file"
一切正常!
<input type="file" name="file" />
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.