gpt4 book ai didi

node.js - 在 Nodejs 中上传文件时,Formidable 不会 form.parse()

转载 作者:太空宇宙 更新时间:2023-11-03 22:48:06 25 4
gpt4 key购买 nike

当我将文件发送到/upload 时,从终端我可以看到代码被阻止在 form.parse(req... 在互联网上我读到这是因为我使用了 bodyParser(),人们建议执行此操作:

delete express.bodyParser.parse['multipart/form-data'];

但是,当我这样做时,我的代码会崩溃,因为解析为空。

有人知道如何让文件上传仅在/upload 中工作并且可能具有强大功能吗?

谢谢。

这是我的app.js:

'use strict';

var express = require("express");
var async = require("async");
var http = require('http');
var url = require("url");
var qs = require("querystring");
var fs = require("fs");
var formidable = require("formidable");
var mime = require("mime");

var app = module.exports = express();

app.configure(function () {
app.set("views", __dirname + "/views");
app.set("view engine", "ejs");
app.engine("html", ejs.renderFile);
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser("abc"));
app.use(express.static(__dirname + "/static"));
app.use(app.router);
app.use(express.limit('5mb'));
});

app.post('/upload', storage.upload);

这是我的代码storage.js:

'use strict';

var async = require('async');
var formidable = require('formidable');
var fs = require('fs');
var util = require('util');
var api = require('./common');

exports.upload = function (req, res) {

console.log("I am here");

var form = new formidable.IncomingForm(),
files = [],
fields = [];

form.uploadDir = "./uploads";

form
.on('field', function (field, value) {
console.log(field, value);
fields.push([field, value]);
})
.on('error', function (err) {
res.writeHead(200, {'content-type': 'text/plain'});
res.end('error:\n\n'+util.inspect(err));
})
.on('file', function (field, file) {
console.log(field, file);
files.push([field, file]);
})
.on('aborted', function (err) {
console.log("user aborted upload");
})
.on('end', function () {
console.log('-> upload done');
res.writeHead(200, {'content-type': 'text/plain'});
res.write('received fields:\n\n '+util.inspect(fields));
res.write('\n\n');
res.end('received files:\n\n '+util.inspect(files));
});
form.parse(req);
};

最佳答案

如果你想使用 formidable,请删除 app.use(express.bodyParser());& 添加 app.use(express.json());app.use(express.urlencoded());

Connect 3.0

这个解决方案对我有用,可能对其他开发人员有帮助。

关于node.js - 在 Nodejs 中上传文件时,Formidable 不会 form.parse(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14720765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com