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

如何在webflux中获取Filepart的大小

蔺劲
2023-03-14

无法确定如何使用RESTendpoint中的FilePart获取文件的实际大小:

@RestController
public class SomeController {

    @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public Mono<Long> fileSize(Mono<FilePart> filePart) {

        //How to get size of FilePart?

        // I'm not plan to create a File saving content of FilePart. 
        // Maybe it's possible somehow calculate size of all bytes.

        return Mono.empty();
    }

}

共有1个答案

裴心思
2023-03-14

当您将文件作为多部分表单数据上载时,将自动创建一个名为“Content-Length”的请求头,该头在发送请求时计算。

但是请注意,由于创建了一些元数据,如文件名、边界等,多部分内容长度略大于文件大小。您无法估计此元数据的长度。解释就在这里。

因此,您可以通过以下方式获得大小(略有增加):

@RestController
public class SomeController {

    @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public Mono<Long> fileSize(Mono<FilePart> filePart, @RequestHeader("Content-Length") long contentLength) {
        System.out.println("Content length is:" + contentLength + "bytes");
        return Mono.empty();
    }

}
 类似资料:
  • 在无Reactor栈上,我是这样做的: 但是FilePart不提供相同的API(例如contentType)。 如何从获取contentType和文件大小?

  • 问题内容: 我使用以下代码实例化了一个对象: 如何获得此文件的大小? 是什么区别,和? 问题答案: 使用类中的方法。从javadocs: 返回此抽象路径名表示的文件的长度。如果此路径名表示目录,则未指定返回值。 对于问题的第二部分,直接来自的javadocs: 返回此抽象路径名所命名的分区上该虚拟机可用的字节数 返回此抽象路径名命名的分区的大小 返回此抽象路径名所命名的分区中未分配的字节数

  • 问题内容: function foldersize($path) { $total_size = 0; $files = scandir($path); 在脚本执行完成之前,为什么处理器使用率会过高或100%升高?可以做些什么来优化它吗?还是有其他方法可以检查文件夹和其中的文件夹大小? 问题答案: 以下是其他地方提供的其他解决方案: 如果在Windows主机上: 否则,如果在Linux主机上:

  • 本文向大家介绍如何在C#中获取文件大小?,包括了如何在C#中获取文件大小?的使用技巧和注意事项,需要的朋友参考一下 FileInfo类用于处理文件及其在C#中的操作。 它提供了用于创建,删除和读取文件的属性和方法。它使用StreamWriter类将数据写入文件。它是System.IO命名空间的一部分。 Directory属性检索代表文件父目录的对象。 DirectoryName属性检索文件的父目录

  • 在经典的spring-mvc中,可以在上设置请求范围属性。在此基础上,我们可以在中解析传入请求,设置请求参数,如当前登录的用户、唯一的请求ID(用于日志关联)等等。这些请求属性可以在请求的生存期内从任何服务(不仅仅是控制器)静态检索。 我正在尝试用Spring-WebFlux实现类似的功能。 我可以使用拦截所有传入请求,获取当前的并对其设置属性。但是,除了controller方法之外,我看不到任何

  • 问题内容: 例如,我得到一个字符串: 我想将其写入文件。 但是在将字符串写入文件之前,我需要知道字符串的大小。我可以使用什么函数来计算字符串的大小? 问题答案: 如果您在谈论字符串的长度,则可以使用: 如果您需要以字节为单位的字符串大小,则需要: 另外,不要调用您的字符串变量。它遮盖了内置功能。