来自 DocuSign 有关文档的文档,“当您将文档文件添加到信封时,DocuSign 平台会将其转换为 PDF 并将其存储为 base64 编码的 ASCII”,然后在 getDocument
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 不会流式传输文件(例如,据我了解,流式传输意味着逐块而不是整体地从资源块消耗/写入资源)。假设我是正确的,那么更好的术语是“字节字符串”。因此我的问题是:
术语binary
latin1
)来解码“字节流”。因此,DocuSign 是否使用“字节流”作为“必须使用字符编码 latin1
进行解码的二进制代码”的术语?
'binary'
:'latin1'
的别名。此编码的名称可能非常具有误导性,因为此处列出的所有编码都会在字符串和二进制数据之间进行转换。对于在字符串和缓冲区之间进行转换,通常 'utf8'
是正确的选择。”
你是对的,正确的术语是字节串,而不是字节流。我们将更新文档。
如果您下载为字节字符串,则不会对其进行编码。它将是二进制的。如果您的客户端无法处理该问题,请使用 Base64 编码下载,然后解码为二进制。