首页 > 解决方案 > 使用 JS 和 NodeJS 上传文件发布请求

问题描述

我有以下请求,我想在 nodejs 中写一个 post 请求:

POST /rest-api/hashDb/createAndUpload HTTP/1.1

主机:192.168.101.54

连接:保持活动

内容长度:428

来源:https ://192.168.101.54

用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36

内容类型:multipart/form-data;边界=----WebKitFormBoundaryQGLkZW0bVDsvWPEY

接受:/

参考:https ://192.168.101.54/ufed/index.html

接受编码:gzip、deflate、br

接受语言:en-US,en;q=0.9,es;q=0.8,he;q=0.7

Cookie:JSESSIONID=s3a5sjc6wp1y1k9hv5advlf3a

这是我写的代码,但它不起作用(文件没有上传):

var FormData = require('form-data');
var fs = require('fs');
var request = require("request")
// var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;

let filePath = "C:\\Temp\\directory.txt" 
let myFile = fs.readFileSync(filePath,'utf8');
var formData = new FormData();
formData.append("myFile", myFile, "directory.txt");
var bounding = {"id":null,"type":"HashDbDto","name":"jorge1","fileType":"TXT","version":"1.2","redaction":false,"categories":[],"format":"MD5"};
formData.append("myFile", JSON.stringify(bounding));

request({
    headers: {'content-type': 'multipart/form-data; boundary=----WebKitFormBoundaryeiNygPyQcm8jomRB'},
    url: "https://192.168.101.54/rest-api/hashDb/createAndUpload",
    method: "POST",
    form: formData
});

你的解决方案是什么?

标签: javascriptnode.jspostrequestxmlhttprequest

解决方案


使用formData密钥而不是form密钥

request({
   headers: {'content-type': 'multipart/form-data; boundary=----WebKitFormBoundaryeiNygPyQcm8jomRB'},
   url: "https://192.168.101.54/rest-api/hashDb/createAndUpload",
   method: "POST",
   form: formData
})

请参阅https://www.npmjs.com/package/request。对于 multipart/form-data,我们使用@felixge 的表单数据库。在大多数情况下,您可以通过 formData 选项传递您上传的表单数据。


推荐阅读