【问题标题】:File upload stuck on large files with Spring Web on Windows在 Windows 上使用 Spring Web 上传文件卡在大文件上
【发布时间】:2019-02-15 23:59:25
【问题描述】:

我有一个 JHipster 应用程序,它提供了一个 REST 端点来上传文件。

这段代码在 Linux 机器上的 Docker 容器中运行没有任何问题,但似乎卡在了在 Windows 上运行的同一个 Docker 容器中。

@PostMapping("/datafiles")
@Timed
public ResponseEntity<DataFileDTO> createDataFile(@Valid @RequestParam("file") MultipartFile data,
        @Valid @RequestHeader("workspaceId") Long workspaceId, RedirectAttributes redirectAttributes)
        throws URISyntaxException, IOException {
    log.debug("REST request to save a data content");

    DataFileDTO result = dataFileService.createFromData(data, workspaceId);

    return ResponseEntity.created(new URI("/api/datafiles/" + result.getId()))
            .headers(HeaderUtil.createEntityCreationAlert(ENTITY_NAME, result.getId().toString())).body(result);
}

此代码适用于 12Mb 的视频文件,但是当我尝试上传 70Mb 的文件时,不会出现调试日志并且服务器被阻塞,直到我从 undertow

    Jan 29 15:26:46 StorageService StorageService-dockerstorage_storageservice-app_1.network:8081: ERROR - io.undertow.request : UT005023: Exception handling request to /api/datafiles
java.io.IOException: UT000128: Remote peer closed connection before all data could be read
    at io.undertow.conduits.FixedLengthStreamSourceConduit.exitRead(FixedLengthStreamSourceConduit.java:338)
    at io.undertow.conduits.FixedLengthStreamSourceConduit.read(FixedLengthStreamSourceConduit.java:255)
    at org.xnio.conduits.ConduitStreamSourceChannel.read(ConduitStreamSourceChannel.java:127)
    at io.undertow.channels.DetachableStreamSourceChannel.read(DetachableStreamSourceChannel.java:209)
    at io.undertow.server.HttpServerExchange$ReadDispatchChannel.read(HttpServerExchange.java:2343)
    at org.xnio.channels.Channels.readBlocking(Channels.java:294)
    at io.undertow.servlet.spec.ServletInputStreamImpl.readIntoBuffer(ServletInputStreamImpl.java:192)
    at io.undertow.servlet.spec.ServletInputStreamImpl.read(ServletInputStreamImpl.java:168)
    at io.undertow.server.handlers.form.MultiPartParserDefinition$MultiPartUploadHandler.parseBlocking(MultiPartParserDefinition.java:223)
    at io.undertow.servlet.spec.HttpServletRequestImpl.parseFormData(HttpServletRequestImpl.java:792)
    ... 43 common frames omitted

更改超时只会让服务器等待,但我的代码部分没有任何反应。

在这种情况下是否有特定于 Windows 的东西?

【问题讨论】:

    标签: windows docker nginx file-upload jhipster


    【解决方案1】:

    我终于发现问题不在JHipster端,而是与运行前端的NGinx Docker容器的配置有关。 好像这种情况下默认配置不一样。

    【讨论】:

      猜你喜欢
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 2022-01-21
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多