我在 node 中使用POST请求上传文件时遇到问题.js.我必须使用request个模块来完成(没有外部NPM).服务器需要它是多部分请求,file字段包含文件的数据.看似简单的事情在Node中很难做到.js,无需使用任何外部模块.

我try 过使用this example,但没有成功:

request.post({
  uri: url,
  method: 'POST',
  multipart: [{
    body: '<FILE_DATA>'
  }]
}, function (err, resp, body) {
  if (err) {
    console.log('Error!');
  } else {
    console.log('URL: ' + body);
  }
});

推荐答案

看起来你已经在用request module了.

在这种情况下,发布multipart/form-data只需使用它的form feature:

var req = request.post(url, function (err, resp, body) {
  if (err) {
    console.log('Error!');
  } else {
    console.log('URL: ' + body);
  }
});
var form = req.form();
form.append('file', '<FILE_DATA>', {
  filename: 'myfile.txt',
  contentType: 'text/plain'
});

但是,如果您想从文件系统发布一些现有文件,那么您可以简单地将其作为可读流传递:

form.append('file', fs.createReadStream(filepath));

request将自动提取所有相关元数据.

如需有关Post multipart/form-data的更多信息,请参阅request内部使用的node-form-data module.

Node.js相关问答推荐

如何将信号从终端窗口发送到运行在Raspberry Pi上的Puppeteer/Node.js上的webscraper

如何在Mongoose for MongoDB中编写此查询

ForbidenError:使用Express.js的CSRF令牌无效

如何从 Mongo Atlas 触发器向 GCP PubSub 发出经过身份验证的请求

Redis Typescript 删除方法类型转换

使用NodeJS通过服务账号列出Google Workspace用户

如何设置 Puppeteer Select 器的唯一性?

使用 Nodejs 获取 Firebase 云消息传递历史记录

Typescript 条件语句不过滤值?

Google Calendar API FreeBusy 外部用户

用户通过 oauth2 twitter 授权或通过Passport discord后如何重定向到 React/Vue 路由?

TypeError:changeChecked 不是函数

如何使动态私有IP地址静态?

制作一个接受命令行参数的脚本

如何使用 gulp-uglify 缩小 ES6 函数?

npm WARN 不推荐使用 graceful-fs@3.0.8:graceful-fs 版本 3

Selenium WebDriver 等到元素显示

在 Node.js 中使用公钥加密数据

Express.js中的bodyParser.urlencoded({extended: true }))和bodyParser.json()是什么意思?

nodejs:Ajax 与 Socket.IO,优缺点