Я хочу использовать multer для загрузки изображений withe express из формы.Об использовании Multer (1.0.6) и Express для загрузки файлов
Я нашел post о том, как использовать multer для загрузки файла и запускать события для переименования файла. Тем не менее, я нашел, что он работает только в старой версии (multer-0.1.6)
В последней инструкции в multer's github, я думаю, мне нужно использовать disk storage engine
для загрузки файлов с новым именем, однако это не работает. Пожалуйста, дайте мне несколько инструкций, я пробовал эту функцию целый день ...
Кроме того, я не уверен, почему нужен res.status(204).end();
? II не добавить эту строку, веб-страница всегда будет запирать, когда я нажимаю кнопку загрузки ...
package.json
{
"name": "FileUpload",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"body-parser": "~1.13.2",
"cookie-parser": "~1.3.5",
"debug": "~2.2.0",
"express": "~4.13.1",
"jade": "~1.11.0",
"morgan": "~1.6.1",
"multer": "^1.0.6",
"serve-favicon": "~2.3.0"
}
}
upload.js
var express = require('express');
var multer = require('multer');
var upload = multer({ storage: storage });
var app = express();
app.post('/uploadImage', upload.single('image'), function (req, res, next) {
console.log("success");
console.log(req.file);
res.status(204).end();
});
app.get('/',function(req,res){
console.log("It's work");
res.sendFile(__dirname + "/index.html");
});
var storage = multer.diskStorage({
destination: function (req, file, cb) {
console.log("Dest");
cb(null, 'uploads/')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
});
app.listen(3000,function(){
console.log("Working on port 3000");
});
index.html
<form id = "uploadForm"
enctype = "multipart/form-data"
action = "/uploadImage"
method = "post"
>
<input type="file" name="image" />
<input type="submit" value="Upload Image" name="submit">
</form>
Решение Причина, по которой мой код не может быть выполнен, является заказом кода ... Следующий заказ является правильным.
var express = require('express');
var multer = require('multer');
var app = express();
app.get('/',function(req,res){
console.log("It's work");
res.sendFile(__dirname + "/index.html");
});
var storage = multer.diskStorage({
destination: function (req, file, cb) {
console.log("Dest");
cb(null, 'uploads/')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
});
var upload = multer({ storage: storage });
app.post('/uploadImage', upload.single('image'), function (req, res, next) {
console.log("success");
console.log(req.file);
res.status(204).end();
});
app.listen(3000,function(){
console.log("Working on port 3000");
});
Как вернуть ошибку или сообщение об успешном? –