【问题标题】:Append PDF binary string to JS FormData将 PDF 二进制字符串附加到 JS FormData
【发布时间】:2021-11-15 00:10:23
【问题描述】:
var uploadData = new FormData();
uploadData.append('myFile', pdfData, fileName);

pdfData 来自另一台服务器,并在控制台上输出以下内容(摘录):

%PDF-1.3 %¿÷¢þ 1 0 对象 > 结束对象 2 0 个对象

所以它是二进制字符串 (?) 格式的 PDF 文件。

执行此代码会导致以下异常:

Uncaught TypeError: Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'.

尝试这样做时:

uploadData.append('myFile', new Blob([pdfData], {type: 'application/pdf'}, fileName);

请求通过,但我在服务器端收到错误:

java.io.IOException: java.util.zip.DataFormatException: invalid code lengths set

所以我认为 PDF 发送不正确。

如何正确编码pdfData?

【问题讨论】:

    标签: javascript xmlhttprequest blob


    【解决方案1】:

    检查您的 Blob 实例是否包含有效的 PDF 文件。像这样:

    const blob = new Blob([data], { type: file.mime_type });
    const blob_url = URL.createObjectURL(blob);
    

    然后创建一个元素来查看它:

    const embed_element = document.createElement('embed');
    embed_element.setAttribute('src', blob_url);
    embed_element.setAttribute('width', '800px');
    embed_element.setAttribute('height', '2100px');
    document.body.append(embed_element);
    

    它是否正确显示 PDF 文件?

    如果请求发送正确,您还应该检查您的开发人员工具。我认为它应该看起来与此类似(Chrome 中的原始 FormData):

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 2016-02-26
      • 1970-01-01
      • 1970-01-01
      • 2015-11-21
      相关资源
      最近更新 更多