Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在Whatspp业务api的http post请求中,将文件作为二进制数据上传的正确方法是什么?_Node.js_Http_Post_File Upload_Whatsapp - Fatal编程技术网

Node.js 在Whatspp业务api的http post请求中,将文件作为二进制数据上传的正确方法是什么?

Node.js 在Whatspp业务api的http post请求中,将文件作为二进制数据上传的正确方法是什么?,node.js,http,post,file-upload,whatsapp,Node.js,Http,Post,File Upload,Whatsapp,我正在尝试创建一种通过whatsapp以pdf格式向客户发送发票的功能。为此,我已经有了一份发票pdf,需要上传到whatsapp服务器上,并根据以下文件发送给我们的客户: 因为它需要二进制媒体数据, 我正在创建一个http post请求主体,如下所示: let requestOptions = { method: method, url: "https://whatsapp-url" + '/v1/upload', body: Buffer.from

我正在尝试创建一种通过whatsapp以pdf格式向客户发送发票的功能。为此,我已经有了一份发票pdf,需要上传到whatsapp服务器上,并根据以下文件发送给我们的客户:

因为它需要二进制媒体数据, 我正在创建一个http post请求主体,如下所示:

    let requestOptions = {
      method: method,
      url: "https://whatsapp-url" + '/v1/upload',
      body: Buffer.from(fs.readFileSync("path/test.pdf")),
      json: true,
      headers: {
        authorization: bearerToken,
        'content-type' : 'application/pdf'
      }
    };

作为对此的回应,我在回复正文中收到Whatsapp的媒体id,我使用该id向客户发送信息,如文件所示:

但是,唉!!收到的pdf文件已损坏且无法打开,此外,我还注意到,与我通过Whatsapp消息在客户端收到的pdf文件相比,我发送的pdf文件的大小要大得多


有谁能帮我解决一下我在创建上传请求正文时可能犯的错误,因为我怀疑这是我所有的问题。

正如文档上所说,你不能这样做


您需要做的是(通过api)为文件创建一个唯一的url,并将其保存在您的终端。然后将该url发送到whatsApp

有两种方法可以通过链接或ID将文件发送给用户。链接可以是您自己的WhatsApp服务器链接,也可以是以提供商名称作为参数的外部链接

如果您随身携带该文件,则可以将该文件上载到WhatsApp business API服务器,并获得媒体ID作为回报。使用该媒体id创建链接,或仅使用该媒体id将文件发送给用户

下面是创建二进制文件的代码示例

 const dataStream = fs.readFileSync(
    `Your Path to file/File Name`,
    null
  );

  let uploadFile = yield whatsAppMessage.uploadWhatsappMediaToUser(
    bot, // We are using Bot kit to process message
    'application/pdf', // mime type
    dataStream, // Binary Data Stream to upload the file
    file name //File name
  );

    function uploadWhatsappMediaToUser(bot, contentType, binaryData, filename) {
  const options = {
    method: 'POST',
    uri: `Upload URL`,
    headers: {
      Authorization: `Bearer  {auth_token}`,
      'Content-Type': contentType,
      'Content-Disposition': `attachment; filename=${filename}`,
    },
    rejectUnauthorized: false,
    body: binaryData,
  };

  return rp(options);
}
在uploadFile变量中,您将收到需要解析以提取媒体ID的json对象。使用该媒体ID发送文件

以下是将文件作为邮件附件发送的代码

const fileDetails = {
    mime_type: 'application/pdf', // MIME type
    id: uploadFile.media[0].id, // Media ID
    filename: fileName,
  };
  yield whatsAppMessage.sendWhatsappMediaMessageToUser(
    bot, // Bot kit object
    userId, //User mobile number
    fileDetails // Above File object
  );

这样,您就可以将文件发送给用户

您能否提供此“通过api创建唯一url”的源文档?