В настоящее время я использую редактор wysiwyg, который имеет реализацию загрузки изображений, которая отправляет отправить запрос на указанный URL-адрес, а затем ожидает ответ в формате JSON, например: { "filelink": "/static/img.jpg" }, чтобы отобразить загруженное изображение.
Мой текущий подход заключается в создании маршрута на стороне сервера, который будет получать изображение из тела запроса, отправлять его в s3, сохранять метаданные (коллекцияFS), а затем возвращать необходимый JSON через ответ.
Я создал экземпляр редактора следующим образом:
Template.editor.rendered = function() {
$("#editor").redactor({
imageUpload: "s3"
});
};
А роутер на стороне сервера выглядит так:
Router.route('/s3', function () {
this.response.setHeader("Content-Type", "text/html");
var data = JSON.stringify(this.request.body;
var res = this.response;
res.end(data);
}, {where: 'server'}
);
К сожалению, это возвращает пустой объект JSON. Я пробовал с request.files и request.body.files, но они не работают.
Я знаю, что маршрут работает, потому что я могу отправить простой html через ответ. И я определенно вижу двоичные данные загруженного файла в почтовом запросе в firebug, но я не могу заставить Meteor получить эти файлы.