Вы можете просто статически обслуживать папку uploads
. При этом вам не нужен фактический обработчик get
, вместо этого вы определяете express.static
-среднее ПО
app.use(express.static('uploads'));
. Теперь клиент может просто выполнить запрос к http://yourServer/<imagename>-<timestamp>
, и файл будет обслуживаться автоматически.
EDIT:
Чтобы получить сгенерированное имя файла для клиента, вы можете сделать следующее:
Вместо того, чтобы делать res.send(file);
в вашем post-handler, вы можете вернуть json, содержащий сгенерированное имя файла, которое затем может запросить клиент:
app.post("/upload", upload.single('image'), (req, res) => {
res.json({uploadedFile: req.file.filename})
});
Еще одна вещь: вы потеряете расширение файла с помощью своей filename
-функции . Чтобы сохранить расширение, вы можете сделать (убедитесь, что require
модуль path
):
filename: (req, file, cb) => {
const extension = path.extname(file.originalname);
cb(null, `${file.fieldname}-${Date.now()}${extension}`);
}