Извините, я, как правило, плохой писатель, когда я не полностью проснулся, позвольте мне пересмотреть.Экспресс-узел сервера возвращает значение для вызова асинхронного клиента
Я использую expressjs с паспортными парами (локальная стратегия) для управления моим сервером и с помощью connect-busboy для управления загрузкой файлов. Я не думаю, что паспорт будет играть роль в этом.
Вот код сервера для управления загрузкой файлов:
app.post('/upload', isLoggedIn, (req, res) => {
if(req.busboy){
req.pipe(req.busboy);
req.busboy.on('file', (fieldname, file, filename, encoding, mimetype) => {
if(mimetype.match(/^image\//)){
var root = path.join(__dirname, "../public/images/");
if(fs.existsSync(path.join(root, filename))){
var name = getUnique(path.join(root, filename));
} else {
var name = filename;
}
var ws = fs.createWriteStream(path.join(root, name), { flags: "a" });
file.pipe(ws);
}
});
}
});
Что касается моей страницы клиента, он используется, чтобы изменить объект JSON, который получит повторно загружен на сервер в качестве инструмента конфигурации. Когда я загружаю новое изображение асинхронно, мне нужно получить имя файла, чтобы обновить этот объект JSON во время работы над ним. Для загрузки с клиентов я использую dropzonejs, который не требует какой-либо конфигурации с моей стороны для работы.
Итак, в итоге я загружаю несколько изображений через dropzone асинхронно, busboy и fs на моем сервере, сохраняя файл, и я хотел бы получить имя файла, возвращенное на мой javascript, для изменения существующего объекта JSON.
Редактировать решение:
Благодаря Эллиот Blackburn для указал мне в правильном направлении.
Позвонив:
ws.on('close',() => {
res.send({filename: name});
});
после file.pipe(ws);
отправить ответ обратно клиенту. На стороне клиента измените зону падения, чтобы обрабатывать ответ так:
dropzone.on('success', (file, res) => {
console.log(res);
});
Спасибо, с этим и посмотрев API Dropzone, используя dropzone.on ('success', (file, res) => {console.log (res)} Я смог получить имя файла назад. это было res.send. будет обновлять сообщение с помощью решения. – Drew
@ Дрю фантастический, рад, что вы нашли ответ –