После некоторых из многих сообщений, связанных с этой темой, я наконец придумал эту версию кода «принудительной загрузки»:
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;
}
Теперь это прекрасно работает с zip-файлами (очевидно, с использованием правильного типа содержимого), но для jpg происходит нечто другое. При использовании HexCompare для проверки исходного и загруженного JPG я обнаружил, что загруженная версия добавляет «EF BB BF» в начале файла. Кажется, этого достаточно для средства просмотра изображений Windows, которое завершает сообщение об ошибке поврежденного файла.
С другой стороны, тот же загруженный jpg отлично открывается в Adobe Photoshop (может быть, менее строго?)
Идеи? любой?
Заранее спасибо.
Z
ОБНОВЛЕНИЕ: загруженные Zip-файлы с использованием этого кода можно открыть только с помощью WinRAR или WinZIP, извлечение Zip-файла проводника Windows показывает сообщение об ошибке Corrupt File Error.
ОБНОВЛЕНИЕ 2: Хорошо, теперь я знаю, что это проблема со спецификацией. Теперь, как я могу избавиться от этого неприятного «EF BB BF» из результата file_get_content?