我正在尝试使用FormBodyPart将文件发送到控制器,而不是直接将文件发送到控制器。下面是用于创建文件集合的代码:
private void addFile(Collection<FormBodyPart> parts, File inputFile, String fileType)
throws ClassificationException {
if (inputFile == null) {
throw new ClassificationException("Null input file provided");
}
if (!inputFile.exists()) {
throw new ClassificationException("Input file not found: " + inputFile.getAbsolutePath());
}
if (fileType != null) {
String charset = "UTF-8";
parts.add(new FormBodyPart("file", new FileBody(inputFile, fileType, charset)));
} else {
parts.add(new FormBodyPart("file", new FileBody(inputFile, inputFile.getName())));
}
}
Parts collection是一个ArrayList,它包含文件。
以下是我的设置Http Entity的代码:
HttpPost httppost = new HttpPost("http://localhost:9000/upload1");
MultipartEntity reqEntity1 = new MultipartEntity();
FormBodyPart part1;
for (Iterator i$ = parts.iterator(); i$.hasNext(); reqEntity1.addPart(part1)) {
part1 = (FormBodyPart) i$.next();
System.out.println(part1.getHeader());
}
httppost.setEntity(reqEntity1);
HttpResponse response = httpclient.execute(httppost);
System.out.println(response);
我的控制器方法声明如下:
String index(@RequestParam("file") MultipartFile uploadfile)
我从服务器得到了一个错误提示:
[400] {"timestamp":1474898550131,"status":400,"error":"Bad Request","exception":"org.springframework.web.multipart.support.MissingServletRequestPartException","message":"Required request part 'file' is not present","path":"/upload1"}
我的dispatcher.xml已经包含multipartResolver bean。
我对web服务还不太熟悉,可能会犯一些愚蠢的错误。请帮我解决这个问题,谢谢!
$
。Java 语言规范 §3.8:*$
符号只应用于机械生成的源代码或者极少数情况下用于访问遗留系统上的预先存在的名称。* - Andreasparts
不是空的吗? - Andreas