. Zip dosyası indir, bozuk bir dosya php çalışır

3 Cevap php

(Ben insanların ilk oturum açmadan erişmek istemiyorum korumalı zip dosyasının bir indirme zorlamak için çalışıyorum.

Ben login ve bu tür için oluşturulan işlevi var, ama ben indirilen dosyanın bozulmasını bir sorun haline çalıştırıyorum.

İşte var kod:

$file='../downloads/'.$filename;
header("Content-type: application/zip;\n");
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".filesize($file).";\n");
header("Content-disposition: attachment; filename=\"".basename($file)."\"");
readfile("$file");
exit();

İşte hata var: Cannot open file: It does not appear to be a valid archive.

Dosya aksi takdirde para cezası indirir, böylece başlıkları ile yanlış yapıyorum bir şey olmalı.

Herhangi bir fikir?

3 Cevap

Bu sorun birkaç nedeni olabilir. Belki dosya bulunamadı veya okunamıyor ve bu nedenle dosyanın içeriği sadece PHP hata mesajıdır. Veya HTTP başlık zaten gönderilir. Ya sonra dosyanın içeriğini bozarsa bazı ek çıkışı var.

Bu gibi komut içine işleme bazı hata eklemek için deneyin:

$file='../downloads/'.$filename;
if (headers_sent()) {
    echo 'HTTP header already sent';
} else {
    if (!is_file($file)) {
        header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');
        echo 'File not found';
    } else if (!is_readable($file)) {
        header($_SERVER['SERVER_PROTOCOL'].' 403 Forbidden');
        echo 'File not readable';
    } else {
        header($_SERVER['SERVER_PROTOCOL'].' 200 OK');
        header("Content-Type: application/zip");
        header("Content-Transfer-Encoding: Binary");
        header("Content-Length: ".filesize($file));
        header("Content-Disposition: attachment; filename=\"".basename($file)."\"");
        readfile($file);
        exit;
    }
}

Ben bir PHP hatası oluşur iki bira bahis, ve hata mesajı ZIP dosyasını karışıyor. İstenen dosya muhtemelen yok.

Notepad veya benzeri bir text editörü ile ZIP dosyasını açın ve neyin yanlış olduğunu bulmak.

Here is the solution create a file with name .htaccess write below line in that SetEnv no-gzip dont-vary

Web sitenize dosya upload. Zaten orada dosya varsa, o yukarıdaki değişikliği olun