如何将文件从NODE发布到PHP端点

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

已获得以下脆弱的规范(无法更改),以将文件从一个服务器(节点)发送到另一个服务器(php)。

<?php
$f = curl_file_create('path-to-file-here');
$options['the-file'] = $f;
$url = 'https://api-address-here';

$curl = curl_init($url);

curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $options);

$response = curl_exec($curl); 
curl_close($curl);
?>

到底如何从节点||发出请求?表达|| nest.js以上?语法是什么?我尝试将文件作为流,缓冲区和编码形式发布在帖子的主体中,但它不起作用。还尝试创建一个formdata并将文件追加到formData上,但这也不起作用。

编辑(地址注释):是的,我正在尝试通过其API将文件从节点服务器(x)发布到PHP服务器(y)。它们都是完全独立的服务器实例。该文件当前位于服务器X上,我将其作为缓冲区。我只是希望能够将其发布到服务器Y。不幸的是,Y在其文档中给出的唯一示例是带有curl的示例,即没有Node示例。当我使用NestJS时,他们已经有一个HTTP客户端来发出请求(https://docs.nestjs.com/techniques/http-module),因此我正在使用它来发出所有请求。这是我的两种方法:1。

// form-data package: https://www.npmjs.com/package/form-data
const formData = new FormData();
formData.append('mainfile', fileBuffer, filename);
this.httpService.post('https://api-address-here', formData);

2。

this.httpService.post('https://api-address-here', {
 mainfile: fileBuffer,
 });

在两种情况下,API都告诉我我没有提供任何文件。我要了解的唯一一件事是,如何通过查看其CURL示例来指定请求的主体。他们是要文件作为表单数据,还是直接在正文中作为对象?如果您需要任何其他信息,请告诉我。

php node.js file post nestjs
1个回答
0
投票

字段名称是'the-file'而不是'mainfile'。尝试

this.httpService.post('https://api-address-here', {
 "the-file": fileBuffer,
 });
© www.soinside.com 2019 - 2024. All rights reserved.