字节流和字节串有什么区别?

问题描述 投票:0回答:1

来自 DocuSign 有关文档的文档,“当您将文档文件添加到信封时,DocuSign 平台会将其转换为 PDF 并将其存储为 base64 编码的 ASCII”,然后在 getDocument

REST API 文档中, “默认情况下,响应是作为字节流的PDF文件...通过在请求中使用
Content-Transfer-Encoding
标头,您可以获得以base64编码的PDF文件。” (强调我的)

这是我目前的理解:

  • 当您从 DocuSign 下载文档时,您必须使用 base64 或“字节流”将其解码回其二进制表示形式,以便将其保存到磁盘或将其提供给需要

    Buffer
    的其他服务。在 NodeJS 中,这就是我与 DocuSign 交互的方式,如下所示:

    • Buffer.from(pdfContent, "base64")
      ,假设您下载了 base64 编码的 PDF。
    • Buffer.from(pdfContent, "binary")
      ([
      binary
      latin1
      1的别名),假设您下载了“字节流”PDF。
  • 当您从 DocuSign 下载文档时,您会立即下载整个文件,因此它不会被流式传输。在这两种情况下,您只是从 DocuSign 获取整个字符串,而不是字节块。

术语“字节流”的使用让我感到困惑,因为 DocuSign 不会流式传输文件(例如,据我了解,流式传输意味着逐块而不是整体地从资源块消耗/写入资源)。假设我是正确的,那么更好的术语是“字节字符串”。因此我的问题是:

术语
    字节流
  • 在这里可以与字节串互换使用吗? 至少在 NodeJS 中,您需要使用
  • binary
  • (或
    latin1
    )来解码“字节流”。因此,DocuSign 是否使用“字节流”作为“必须使用字符编码
    latin1
    进行解码的二进制代码”的术语?
    
    

    来自 NodeJS Buffer 文档
  1. :“'binary'
    'latin1'
    的别名。此编码的名称可能非常具有误导性,因为此处列出的所有编码都会在字符串和二进制数据之间进行转换。对于在字符串和缓冲区之间进行转换,通常
    'utf8'
    是正确的选择。”
    
        
node.js docusignapi bytestream
1个回答
0
投票

你是对的,正确的术语是字节串,而不是字节流。我们将更新文档。

如果您下载为字节字符串,则不会对其进行编码。它将是二进制的。如果您的客户端无法处理该问题,请使用 Base64 编码下载,然后解码为二进制。

© www.soinside.com 2019 - 2024. All rights reserved.