SpringBoot -文件上传大于500 kb无法工作

ekqde3dh  于 2022-12-23  发布在  Spring
关注(0)|答案(1)|浏览(349)

我有SpringBoot(v2.7.1,Spring v5.3.21)与Kotlin和WebFlux项目。我试图创建一个简单的文件上传控制器,到目前为止的工作,但只有小于500KB的文件。

@RestController
@RequestMapping("/emailFile")
class EmailController {
    val logger = LoggerFactory.getLogger(this::class.java)

    @PostMapping("/upload", consumes = [MediaType.MULTIPART_FORM_DATA_VALUE])
    suspend fun uploadFile(
        @RequestPart("attachment") attachment: FilePart,
        @RequestPart("message") message: String
    ): ResponseEntity<String> {

        val content = attachment.content().awaitFirst()
        val bytes = content.asByteBuffer()

        logger.debug(bytes.array().size.toString())

        File("testfilespring.png").writeBytes(bytes.array());

        return  ResponseEntity(message, HttpStatus.ACCEPTED)
    }
}

当我为大于500kb的文件记录bytes.array().size时,它总是1024。
通过 Postman 或通过带有获取方法的React应用程序上传文件:

当我浏览应用程序日志时,我没有看到任何内容。我也尝试设置最大文件大小,但没有成功。

spring:
  servlet:
    multipart:
      enabled: true
      max-file-size: 10MB
      max-request-size: 10MB
ttp71kqs

ttp71kqs1#

看起来像这样工作:

package me.janam.api

import org.springframework.context.annotation.Configuration
import org.springframework.http.codec.ServerCodecConfigurer
import org.springframework.web.reactive.config.EnableWebFlux
import org.springframework.web.reactive.config.WebFluxConfigurer

@Configuration
@EnableWebFlux
class WebConfig : WebFluxConfigurer {
    override fun configureHttpMessageCodecs(configurer: ServerCodecConfigurer) {
        configurer.defaultCodecs().maxInMemorySize(-1)
    }
}

相关问题