Dosyayı indirmek için PHP komut dosyası IE çalışmıyor

4 Cevap php

Ben, $ _GET ['key'] adlı bir anahtar alır bir veritabanında konumunu arar ve kullanımı için bir indirme sunmak için bazı başlıkları ile birlikte readfile kullanan bir komut dosyası var. Bu Firefox'ta çalışır ancak IE8, başka bir IE üzerinde test etmek mümkün olmamıştır değil. Ben IE aşağıdaki hatayı alıyorum: "Internet Explorer www.example.com gelen download.php indiremezsiniz". Bu PHP komut dosyası indirmeye çalışıyor sanki.


$the_query = "SELECT * FROM `files` WHERE `user_id`=" . $_SESSION['user_id'] . " AND `key`='" . $key . "'";

$result = mysql_query($the_query);
$row = mysql_fetch_array($result);

$file = '/var/www/vhosts/www.example.com/httpsdocs/uploads/' . $row['id'] . '/' . $row['file'];

header("Content-type: application/octet-stream");
header("Content-length: ".filesize($file));
header('Content-Description: File Transfer');
header("Cache-control: private");
header('Content-Disposition: attachment; filename=' . rawurlencode(basename($file)));
readfile($file);

4 Cevap

To solve the error : "Internet Explorer cannot download download.php from www.example.com", Add these headers to your script:

header("Pragma: ");

header("Cache-Control: ");

Kod yükleme sorunu yapar başlıklarından Cache-Control kaldıracaktır.

Yukarıdaki kod dosyasının en eklenmelidir.

Bu bizim için çalışıyor.

Php.net gelen ilk örneği kullanarak bu çalışma başardı

http://us3.php.net/manual/en/function.readfile.php


header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;

Replace this:
header("Content-type: application/octet-stream");
with this:
header("Content-Type: application/force-download");

Buna göre post, IE normalde başlıklarını dinlemek değil, ve yerine gönderiyor ne kendisi arar.

Sadece bir ipucu, (benim gibi) birisi doğrudan güvenli https-isteğini kullanarak adres çubuğuna bir FileDownload girerek sorunlarla karşı karşıya ise. Bu indirme başarısız olmasına neden olan bir IE hata var:

http://support.microsoft.com/kb/323308/en-us

Sadece geçici maddeye göre önbellek-üstbilgileri ayarlayarak gibi görünüyor.