我是完整的新手到Node.js.我只是想学习上传和使用ajax显示图像像我在php.I发现大多数教程对我来说很难。要开始我尝试使用此代码
var express = require("express");
var app = express()
var bodyParser = require('body-parser')
//all environment
app.use(bodyParser())
var form = "<!DOCTYPE HTML><html><body>" +
"<form method='post' action='/upload' enctype='multipart/form-data'>" +
"<input type='file' name='image'/>" +
"<input type='submit' /></form>" +
"</body></html>";
app.get('/', function (req, res){
res.writeHead(200, {'Content-Type': 'text/html' });
res.end(form);
});
/// Post files
app.post('/upload', function(req, res) {
console.log('Hello world');
console.log(req.files);
});
app.listen(8080)
但是我为了req.files而得到了理解。任何人都告诉我们为什么?。请原谅我,如果这是一个愚蠢的问题。还有一些资源帮助。谢谢你提前。
答案 0 :(得分:2)
req.files适用于快递v3,您使用的是v4。
现在,body-parser只处理urlencoded和json主体。 对于多部分机构,您应该使用替代方案。
https://github.com/expressjs/body-parser
例如multer:
var express = require('express')
var multer = require('multer')
var app = express()
app.use(multer({ dest: './uploads/'}))
/// Post files
app.post('/upload', function(req, res) {
console.log('Hello world');
console.log(req.files);
});
app.listen(8080)
答案 1 :(得分:1)
使用快递4,busboy
是处理上传图像的绝佳方式。我们来看一下减少example from Miaou:
exports.appPostUpload = function(req, res){
var busboy = new Busboy({ headers: req.headers }), files=[];
busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
var chunks = [];
file.on('data', function(chunk) {
chunks.push(chunk);
// todo : abort if sum of chunk.lengths is too big (and tell the client he's fat)
});
file.on('end', function() {
files.push({name:fieldname, bytes:Buffer.concat(chunks)});
});
}).on('finish', function() {
if (!files.length) {
return res.send({error:'found nothing in form'});
}
// we can now work with the items in `files` like you normally would.
});
req.pipe(busboy);
}