当前位置: 首页 > 知识库问答 >
问题:

如何用Spring/MultipartFile捕获中断的流

赫连瀚
2023-03-14

我有一个Spring Boot应用程序,它是移动/Web应用程序的API。其中一个endpoint接受如下的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>

提前感谢。

共有1个答案

潘佐
2023-03-14

< code>Multipart流已经加载到服务器,您可以在控制器内部访问它。

使用校验和确保文件不会中断。

计算它并与多部分数据一起发送:

@RequestMapping(...)
public ResponseEntity<?> post(@RequestParam("file") MultipartFile file,
                              @RequestParam("checksum") String checksum) {
    ...
}

之后,您可以在服务器端重新计算校验和,以便检索实际的checksum

 类似资料:
  • 问题内容: 我在Python中构建了一个简短的url转换器引擎,并且看到大量的“管道破损”错误,并且很好奇在使用BaseHTTPServer类时如何最好地捕获它。这不是全部代码,但可以让您大致了解我目前正在做什么: 该代码本身运行良好,但是在生产中几乎立即开始引发错误: 这些错误的大部分似乎源于在调用send_header()方法时遇到的问题,其中我要写的是: 所以我很好奇在我的代码中尝试捕获此I

  • 我有两个实现Runnable接口的对象,并在单独的线程中执行它们。本质上,在Runnable对象的方法中,我执行一些网络活动,包括调用在等待输入(来自网络)时阻塞的方法。请注意,我没有任何有意的暂停,即调用。任何暂停都是由对可能阻塞的方法的调用引起的。 这些可运行对象在GUI的控制下,因此GUI界面和我希望提供给用户的一个功能是结束执行我的可运行对象的线程的能力,但是我无法理解如何做到这一点。 下

  • 我一直在尝试将文件从rest客户端发送到我的spring控制器。在控制器中,我使用“@requestParam(“file”)MultipartFile file”从客户端获取文件,并使用REST服务注释进行注释,如下所示 我总是得到415媒体类型不支持。在上面的方法中,如果我不给多部分,它给我的结果是完成了,但不是多部分。 所以我可以知道如何发送文件到我的Spring控制器?

  • 问题内容: 一切都很棒,直到遇到真正需要捕捉例外的地方。当我放置 在 阻止我得到: 在这种情况下我该怎么办? 谢谢, 问题答案: 这是因为,任何一种方法(javadoc链接)都不会引发检查异常。Spring将其转换为DataAccessException之一,它是更通用的运行时异常家族,以抽象出任何特定的基础数据库实现。

  • 问题内容: 在春季集成中,我有一个简单的tcp客户管道:一个网关,一个tcp出站网关,一个服务激活器以及一个错误通道。在tcp-connection- factory中有一个简单的拦截器。错误通道非常简单,我使用此过滤器实现了tcp-connection-event-inbound-channel- adapter: org.springframework.integration.ip.tcp.c

  • 我已经在tomcat 7.0.55中部署了一个应用程序进行测试。我想捕获“HeapDumpOnOutOfMemoryError”是否正在发生。以下是我的JVM参数。 JAVA_OPTS="-server-Xms512M-Xmx2048M-XX: PermSize=256m-XX: MaxPermSize=512m-XX: UseConcMarkSweepGC-XX: UseParNewGC-XX: