При использовании proxy сервера для доступа к RocketChat возникает проблема с некорректной передачей ссылки. По умолчанию в ссылке используется имя файла в формате UTF-8, но при передаче через proxy ссылке передается некорректно. Не очень важно в чем причина данной ошибки — в обработке proxy сервером или во framework meteor. Использование в ссылке имени файла, даже учитывая, что оно будет перекодировано в “правильный” формат (US-ASCII), является неудачным решением.
Исправить данную проблему достаточно просто надо изменить только одну строку кода. Здесь (GitHub file: app/file-upload/server/methods/sendFileMessage.js) представлена корректировка для исходного кода до сборки сервера. Если вы используете уже собранный сервер, например внутри Docker, вы можете просто отредактировать файл: /app/bundle/programs/server/app/app.js. Найдите метод: sendFileMessage и замените строку:
... Meteor.methods({ async sendFileMessage(roomId, store, file, msgData = {}) { ... /* закомментируйте или удалите это строку */ // const fileUrl = FileUpload.getPath("".concat(file._id, "/").concat(encodeURI(file.name))); /* вставьте это строку */ const fileUrl = FileUpload.getPath("".concat(file._id, "/file")); ...