Задать вопрос
ms-dred
@ms-dred
Вечно что то не то и что то не так...

Как правильно отдать файл на загрузку?

Не пойму в чем проблема при отдаче файла, в частности проблема с мобильными устройствами.
На сайте есть форма, с помощью js отправляю id документа для поиска файла и последующих действий с ним.
В обработчике уменьшаю и обрезаю картинку
function resize(s, w) {
    gm(
        path.image // путь до изображения
    )
        .resize(s.w, s.h, '^')
        .gravity('Center')
        .crop(s.w, s.h)
        .quality(90)
        .noProfile()
        .toBuffer(function (e, buffer) {
            return c(e, buffer);
        });
}


После обработки отдаю следующим образом
res.statusCode = 200;
res.setHeader('content-type', 'image/jpeg');
res.setHeader('Content-Disposition', 'attachment; filename=' + data.get.image); // название картинки вместе с расширением
res.end(buffer);


С ПК идет загрузка файла и все хорошо, но с мобильника "Файл без названия. Не удалось загрузить файл."
Я так понимаю проблема с заголовками? Что с ними не так?
  • Вопрос задан
  • 858 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 1
dummyman
@dummyman
диссидент-схизматик
Вы не указали в заголовках ответа размер буфера
res.setHeader("Content-Length", buffer.length);

и еще content-type я бы писал с больших буков. Хотя express возможно исправит и сама
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы