已获得以下脆弱的规范(无法更改),以将文件从一个服务器(节点)发送到另一个服务器(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示例来指定请求的主体。他们是要文件作为表单数据,还是直接在正文中作为对象?如果您需要任何其他信息,请告诉我。
字段名称是'the-file'而不是'mainfile'。尝试
this.httpService.post('https://api-address-here', {
"the-file": fileBuffer,
});