После некоторых из многочисленных сообщений, относящихся к этой теме я наконец придумал эту версию «сила скачать» Код:Symfony2 принуждая JPG скачать возвращает поврежденный файл
public function downloadAction(Request $request){
$filename= 'test.jpg';
$response = new Response();
$response->headers->set('Content-Type','image/jpg');
$response->headers->set('Content-Disposition', 'attachment; filename="' . basename($filename) . '"');
$response->sendHeaders();
$response->setContent(file_get_contents($filename));
return $response;
}
Теперь, это прекрасно работает с почтовыми файлами (очевидно, используя правильный контент-тип), но для jpg происходит что-то другое. При использовании HexCompare для проверки как оригинального, так и загруженного JPG я обнаружил, что загруженная версия добавляет «EF BB BF» в начале файла. Кажется, этого достаточно для Windows Image Viewer, который заканчивает сообщение о поврежденной ошибке файла.
С другой стороны, тот же загруженное JPG открывает совершенно в Adobe Photoshop (менее строгими, возможно?)
идеи? кто угодно?
Заранее спасибо.
Z
UPDATE: Скачано файлов Zip, используя этот код может быть открыт только с помощью WinRAR или WinZIP, Zip Extract Проводник Windows показывает Коррумпированные сообщение об ошибке файла.
UPDATE2: Хорошо, теперь я знаю проблему. Теперь, как я могу избавиться от этого неприятного «EF BB BF» из результата file_get_content?
Не работает nifr. Используя этот подход, загруженный файл получает на несколько сотен килобайт больше, все еще поврежденный вывод, даже для Photoshop. Файл, загруженный исходным кодом, открывается правильно в Photoshop. – Zilos
Примечание: исходный файл jpg для тестирования - только 633 КБ, который отлично открывается в Windows 7 Image Viewer. Сделано некоторое тестирование на 11KB 1x1pix файл, тот же результат. – Zilos
обновил мой ответ :) – nifr