【发布时间】:2017-02-18 21:50:04
【问题描述】:
我有一个 Spring Boot 应用程序,它是移动/网络应用程序的 API。其中一个端点接受这样的 MultipartFile(图像或视频):
@RequestMapping(value = "/x/y/z", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<?> post(@RequestParam("file") MultipartFile file) {
...
}
调用该方法时,我会获取文件内容并将其保存在某处。但是,我注意到了一个错误 - 如果我在上传期间 终止移动应用程序上的网络连接,我在 API 端没有得到任何类型的 IOException,我最终得到截断的字节数组:
try {
InputSteam inputStream = file.getInputStream();
byte[] allBytes = IOUtils.toByteArray(inputStream);
inputStream.close();
} catch (Exception ex) {
//never get to this
}
所以问题是:如何确保流不中断?
使用 Spring Boot:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.3.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
提前致谢。
【问题讨论】:
-
@kuhajeyan 谢谢,你在这里特别指出什么?我已经有一个 MultipartFile 参考 - 大概它的大小仍会被截断? (我们不是分块上传)
-
可能,不确定在执行操作之前检查文件内容/大小对您有多大帮助。
-
多部分流已经加载到服务器,然后您才能在控制器中访问它。如果文件完整性对您很重要,请将其校验和与多部分本身一起发送。
-
@WildDev 谢谢。你能把它作为答案吗?
标签: java spring spring-boot