我正在尝试将文件上传到我的本地spring3 Web应用程序并在本地保存文件。以下是代码段:
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public String saveForm(@ModelAttribute("fileUploadForm") FileUploadForm form, BindingResult result) throws IOException {
InputStream inputStream = form.getFile().getInputStream();
logger.debug("uploadfile: "+form.getFile());
String fileName = form.getFile().getOriginalFilename();
OutputStream outputStream = new FileOutputStream(tmpFileDir+"\\"+fileName);
int read = 0;
byte[] bytes = new byte[1024];
while ((read = inputStream.read(bytes)) != -1) {
outputStream.write(bytes);
}
outputStream.close();
return "fileUploadSuccess";
}
执行文件上传的jsp文件是:
<form:form method="post" action="uploadFile" modelAttribute="fileUploadForm" enctype="multipart/form-data">
<table>
<tr>
<td><input name="file" type="file" /></td>
<td></td>
</tr>
<tr>
<td>
<input type="submit" value="<spring:message code="label.upload"/>" name="submit" />
</td>
</tr>
</table>
</form:form>
现在打开上传的文件和保存的文件后,我可以看到保存的文件最后有很多字体。
知道如何解决这个问题吗?
由于
答案 0 :(得分:0)
将您的while循环更改为:
while ((read = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
那是因为:
write(byte[] b)
- 将指定字节数组中的b.length个字节写入此输出流。因此,它将使用null填充您的输出流,以便在最后一次迭代时达到字节大小。
write(byte[] b, int off, int len)
- 将从offset off开始的指定字节数组中的len个字节写入此输出流
希望这有帮助