使用请求的PUT方法上传本地JSON文件会修改文件

时间:2019-10-10 14:15:32

标签: javascript node.js amazon-s3 request multipartform-data

摘要

我必须使用s3公共URL将本地JSON文件上传到s3。我将PUT方法与formData一起使用以上传文件。文件已成功上传,但文件内容已修改。更准确地说,内容附加在请求的标头之后。

最简单的复制示例

我正在使用以下代码上传文件。

// Let the name of the file be **test.json**. The contents are as following:
{
  "a": "1",
  "b": "2"
}

js代码

// code starts here
const url= 'some s3 path url';
const options = {
  method: 'PUT',
  url: url,
  headers: {
    'x-amz-acl': 'bucket-owner-full-control'
  },
  formData: {
    file: fs.createReadStream(path.join('./test.json'))
  }
};

request(options, function (error, response, body) {
    if (error) throw new Error(chalk.bold.red(error));
    if (response.statusCode != 200) {
        console.error(JSON.stringify(response.body));
        return;
    }
    console.log(chalk.green.bold(response.statusCode));
})

预期行为

文件应该使用类似的数据上传到S3。

当前行为

文件已上传到S3存储桶,但文件内的内容已修改。 该文件的新内容为:

----------------------------054810111042388555675130
Content-Disposition: form-data; name="file"; filename="test.json"
Content-Type: application/json

{
    "a": "1",
    "b": "2"
}
----------------------------054810111042388555675130--

如何在不添加这些额外行的情况下修改上传文件的请求?

0 个答案:

没有答案