通过邮递员发送二维字节数组(多个文件)作为多部分请求

Posted

技术标签:

【中文标题】通过邮递员发送二维字节数组(多个文件)作为多部分请求【英文标题】:Sending two dimensional byte array(multiple files) through postman as a multi part request 【发布时间】:2020-01-09 00:45:30 【问题描述】:

我在春季开发了一个休息端点。它使用一个字符串作为一部分(元)和一个二维字节数组(文档)作为第二部分的多部分请求。我能够使用代码推送数据。 但我想使用邮递员测试其余端点

我已尝试将请求部分密钥发送为

    文件[0] - 文件,文件1 - 文件 文档 - 多个文件 文档 [ ] - 文件 专门将内容类型添加为多部分表单数据 还专门为每个键添加了内容类型。 上述方法均无效。

有人可以建议我如何通过邮递员将二维字节数组发送到弹簧休息端点。

【问题讨论】:

您可以发布您的 REST 方法的签名吗? @robingood 用截图更新了问题 您试图从中获取 byte[][] 到底是什么?你有一个二维数组的字符串吗?您能否按照您发送的方式加载您发送的数据内容的样本? @Stempler 我将多个文件作为二维字节数组发送。 @Kaiizok,你能解释一下二维字节数组吗?我只能从 Postman 屏幕截图中看到一个维度。 【参考方案1】:

您可以在控制器方法参数中使用List<MultipartFile>/MultipartFile[],您可以从每个MultipartFile 获取每个上传文件的byte[]。它还允许您获取每个上传文件的原始文件名、大小和内容类型。

代码看起来像这样:

@RequestMapping(value="/testMultiPart")
@ResponseBody
public ResponseEntity testMultiPart(
    @RequestPart("meta") Map<String,String> meta,  
    @RequestPart("documents") List<MultipartFile> docs)


    for(MultipartFile file: docs)
        //Get the byte array for this file
        byte[] bytes = file.getBytes();

        System.out.println("OriginalFilename:" + file.getOriginalFilename());
        System.out.println("FileSize:" + file.getSize());
        System.out.println("ContentType:" + file.getContentType());

    

【讨论】:

这种方法是可行的,但是有什么方法可以在不修改任何内容的情况下接收它。我希望请求部分是一个二维字节数组。你能建议一些其他的方法吗? 如果你想要实现的是“不修改任何东西”,那么它不能,因为它是这样工作的。您可以实现的最相似的事情是使用MultipartFile[]【参考方案2】:

你试过了吗?

documents[0,0]
documents[0,1]
documents[1,0]
documents[0,1]
...

【讨论】:

以上是关于通过邮递员发送二维字节数组(多个文件)作为多部分请求的主要内容,如果未能解决你的问题,请参考以下文章

通过 BLE 向 MCU 发送字节数组

如何在邮递员的同一请求中发送多部分/表单数据和嵌套 json?

通过 Web 服务将文件作为字节数组发送时会产生多少额外开销?

如何从邮递员传递字节数组

HTTP 字节范围和多部分/字节范围替代方案?

如何在录制时发送 mp4 的可读部分