2013-04-16 4 views
-1

Я работаю над скриптом, который позволяет скачивать файлы pptx и zip с помощью php, но этот скрипт ведет себя по-разному в разных браузерах. Я пробовал много скриптов, доступных в Интернете, но ничего не работало должным образом, поэтому я сделал это, чтобы собрать куски из разных сценариев.Как заставить загрузку файла во всех браузерах?

  1. светлячок => работает отлично
  2. Opera => Скачать файл как HTM файл
  3. Safari => 0kb Файл
  4. IE => Ловля старый файл

Мой код: -

// content type for pptx file 
$ctype = "application/vnd.openxmlformats-officedocument.presentationml.presentation"; 
$file = "http://www.abc.com/presentation.pptx"; 
header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: private",false); // required for certain browsers 
header("Content-Type: ".$ctype); 
header("Content-Disposition: attachment; filename=\"".basename($file)."\";"); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: ".filesize($file)); 

ob_clean(); 
flush(); 
readfile($file); 

Как я могу заставить все браузеры надежно загрузить вместо того, чтобы отображать, казалось бы, случайное поведение выше?

Редактировать: Ниже приведен код, который работал для меня, я не уверен, в чем проблема, нежелательные заголовки или путь к файлу? Я сделал и изменения, и это сработало.

$ctype = "application/vnd.openxmlformats-officedocument.presentationml.presentation"; 
$file = "Presentation3.pptx"; 
header("Pragma: public"); 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: ".$ctype); 
header("Content-Disposition: attachment; filename=\"".basename($file)."\";"); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: ".filesize($file)); 
readfile($file); 
+0

Что вы хотите сказать? – vascowhite

+0

см. Мой ответ. Мне кажется, что это полезно для вас. Http://stackoverflow.com/questions/15893738/zip-file-downloading-as-php/15893990#15893990 –

+0

@vascowhite: вопрос в том, что загрузка файлов работает по-разному в разных браузерах –

ответ

1

в моем тесте вашего кода работы идеально, если использовать локальный файл вместо URL-адреса с URL дать мне 0Kb слишком

я проверить в Firefox, IE, Chrome все результат тот же

// content type for pptx file 
    $ctype = "application/vnd.openxmlformats-officedocument.presentationml.presentation"; 

    $file = "presentation.pptx";//attention 

    header("Pragma: public"); 
    header("Expires: 0"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    header("Cache-Control: private",false); // required for certain browsers 
    header("Content-Type: ".$ctype); 
    header("Content-Disposition: attachment; filename=\"".basename($file)."\";"); 
    header("Content-Transfer-Encoding: binary"); 
    header("Content-Length: ".filesize($file)); 

    ob_clean(); 
    flush(); 
    readfile($file); 
+0

Я следовал твоему предложению и предложению Марсело, и его работа прекратилась во всех браузерах. Спасибо –

1

Если файл находится на вашем сервере, не используйте URL. Если это внешний файл, я должен сначала записать его на ваш сервер, а затем распечатать его пользователю.

Я бы также удалил линию header("Cache-Control: private",false);; и использовать header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); вместо header("Expires: 0");. Он всегда работал для меня таким образом :)

Также пытаемся удалить ob_clean(); flush(); (так как при отправке файла ничего не нужно очищать или очищать).

+0

Я следил за вашим предложением и предложением Mohammads, и его работа прекратилась во всех браузерах. Спасибо –

1

Обратите внимание, что некоторые проблемы в браузерах IOS для загрузки.

+0

Я протестировал его на windows 7, Safari 5.1.7, Кстати, с какими проблемами вы столкнулись в браузере ios? Спасибо –

+0

Я пробовал в сафари в ipod, ipad и т. Д. В Mac-окнах и т. Д. Он отлично работает. Я попытался добавить функции загрузки аудио. Но вместо загрузки он начал потоковое вещание. –

+0

Можете ли вы доставить мне пользу?Попробуйте загрузить pptx и zip? –

Смежные вопросы