Od ExpressJS 4 API, uważam, że plik req.files był nieprawidłowy. Jak przesyłać pliki za pomocą ExpressJS 4?Jak przesłać pliki za pomocą ExpressJS 4?
Odpowiedz
express.bodyParser
nie jest domyślnie uwzględniony w Express 4. Musisz zainstalować osobno. Zobacz https://github.com/expressjs/body-parser
Przykład:
var bodyParser = require('body-parser');
var app = connect();
app.use(bodyParser());
app.use(function (req, res, next) {
console.log(req.body) // populated!
next();
})
Istnieje również node-formidable
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files) {
res.writeHead(200, {'content-type': 'text/plain'});
res.write('received upload:\n\n');
res.end(util.inspect({fields: fields, files: files}));
});
return;
Oto jak to zrobiłem:
form = new formidable.IncomingForm();
form.uploadDir = __dirname.getParent() + "/temp/";
form.parse(req, function(err, fields, files) {
var newfile, path, uid, versionName;
uid = uuid.v4();
newfile = __dirname.getParent() + "/uploads/" + uid;
copyFile(files.file.path, newfile, function(err) {
if (err) {
console.log(err);
req.flash("error", "Oops, something went wrong! (reason: copy)");
return res.redirect(req.url);
}
fs.unlink(files.file.path, function(err) {
if (err) {
req.flash("error", "Oops, something went wrong! (reason: deletion)");
return res.redirect(req.url);
}
// done!
// ...
});
});
});
prostu miałem ten problem po aktualizacji, gdzie req.files
był niezdefiniowany. Naprawiłem to za pomocą multer.
Więc
npm install multer
a następnie w swoim app.js
var multer = require('multer');
app.use(multer({ dest: './tmp/'}));
nie trzeba zmieniać niczego innego po tym i cały mój stary funkcjonalność pracował.
Użyłem multer zgodnie z twoją rekomendacją i jest dobry. Ale nie ma kontroli nad przesłanym plikiem w poście, jak mogę zarządzać dwoma różnymi adresami URL-a pliku, gdzie raz, chciałbym zmienić nazwę pliku, a nie zmienić jego nazwy. Pytam, ponieważ funkcja "zmień nazwę" jest zdefiniowana raz i wygląda na to, że zostanie zastosowana do wszystkich instancji plików. – codin
Nie jesteś pewien co masz na myśli. Na mojej faktycznej trasie, w której przetwarzam pliki, nie odwołuję się nawet do 'multer' (' multer' jest właśnie używany w moim 'app.js'). Używam tylko req.files [0], req.files [1], etc w mojej trasie i używam 'fs.readFile' i' fs.writeFile', aby to przenieść. Od Express 3 do Express 4, nic z tego dla mnie nie zmieniło ... po prostu dodano 'multer' w Express 4 i wszystkie stare funkcje działały ... Być może będziesz musiał wysłać pytanie z przykładem kodu. – MikeSmithDev
W tej chwili używam multer z Twojego kodu i otrzymuję 'TypeError: multer nie jest funkcją' – Musa
- 1. Jak przesłać duże pliki za pomocą MVC 4?
- 2. Jak przesłać pliki do Soundcloud za pomocą Pythona?
- 3. Jak przesłać pliki audio za pomocą Paperclip w Rails 3?
- 4. Jak przesłać pliki (wieloczęściowe) za pomocą metody angularjs2
- 5. Jak sprawdzić hosta za pomocą ExpressJS?
- 6. Jak przesłać tylko ukryte pliki?
- 7. Jak przesłać .docx za pomocą Codeigniter? (PHP)
- 8. Jak przesłać plik za pomocą Mojolicious?
- 9. Jak przesłać pliki na GitHub
- 10. Jak przesłać wiele plików za pomocą AFNetworking
- 11. Jak przesłać kod za pomocą gitg?
- 12. jak mogę przesłać plik za pomocą PHP
- 13. Jak przesłać formularz za pomocą PhantomJS?
- 14. Jak przesłać pliki obrazów przez WCF?
- 15. Jak analizować pliki .ttl za pomocą RDFLib?
- 16. Jak przesłać zadanie w tle za pomocą afnetworking
- 17. Jak zapętlić pliki za pomocą Pythona?
- 18. Jak przesłać plik do witryny SharePoint za pomocą skryptu pythonowego
- 19. iPhone przesłać wieloczęściowy plik za pomocą AFNetworking
- 20. Jak przesłać wiele plików za pomocą jednego przycisku przesyłania
- 21. Jak przekazywać pliki do instancji emulatora za pomocą Android Studio
- 22. Jak przesłać pliki do lazuru w tle za pomocą Delphi i OmniThread?
- 23. Jak przesłać & Save Pliki z żądaną nazwę
- 24. Angular.js i Amazon S3 - jak przesłać pliki?
- 25. Jak przesłać pliki do GCloud w Node.js?
- 26. Jak wypełnić pole formularza i przesłać za pomocą javascript?
- 27. Nie można przesłać pliku za pomocą php
- 28. Jak analizować pliki SQL za pomocą C#?
- 29. Jak rozmieścić pliki za pomocą aplikacji clickonce?
- 30. Jak zamówić wstrzyknięte pliki za pomocą Gulp?
Odpowiedź jest właściwa, należy użyć oprogramowania pośredniego trzeciej części. Ale użyłem funkcji connect-multiparty. Następnie mogę użyć pliku req.files do pobrania plików. – vcLwei
używanie analizatora treści w wyrażeniu 4.x jest przestarzałe i [z bardzo dobrego powodu] (http://andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html) – uiron