• 23-08-2014, 12:58:02
    #1
    Merhaba arkadaşlar netten bulduğum daha doğrusu her yerde aynı olan kodu ben kullanınca sitemden indirdiğim rar lı inen dosyaları arşiv bozuk diyor
    <?php
    $DLPath = "files/";
    $DLFile = "turkish.rar";
    header('Content-type: application/x-rar-compressed');
    header('Content-Disposition: attachment; filename="'. $DLFile .'"');
    readfile($DLPath. $DLFile);
    ?>
    panelde MIME tipleri kısmından gerekli zip ve rar tanımlarını da yaptım fakat
    sadece rar lı dosyaları indirip açmaya kalkınca arşiv hasarlı oluyor.
    amaç kullanıcıların sitemde barınan dosyaları download etmesini sağlamak.
  • 24-08-2014, 01:58:56
    #2
    @fsahinoglu; header tanımlarınızı aşağıdaki şekilde değiştirip dener misiniz ?

    header("Cache-Control: no-cache");
    header("Content-Description: File Transfer");
    header("Content-Disposition: attachment; filename=".$DLFile );
    header("Content-Transfer-Encoding: binary");
    pek alakası olacağını sanmıyorum ama yine çalışmazsa readfile yerine echo file_get_contents() ile deneyin. ayrıca dosya içeriği dışında ekrana bilgi basmamalısınız alt satırlarda ayrı kontroller ve bir echo işlemi varsa readfiledan sonra exit ile çalışmayı durdurun.

    Tüm bu işlemlerden sonra yine çalışmazsa farklı bir serverda ve tarayıcıda denemenizi öneririm.
  • 24-08-2014, 10:13:44
    #3
    arşiv açılmıyor bozuk yine diyor farklı serverda deneme şansım yok malesef.
  • 24-08-2014, 10:24:31
    #4
    Bende de böyle bir sorun olmuştu cözememistim.. Yardım bekliyoruz.
  • 24-08-2014, 18:37:38
    #5
    $file_url='file.rar';
    if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
        header('Content-Type: "application/octet-stream"');
        header('Content-Disposition: attachment; filename="'.basename($file_url).'"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header("Content-Transfer-Encoding: binary");
        header('Pragma: public');
        header("Content-Length: ".filesize($file_url));
    } else {
        header('Content-Type: "application/octet-stream"');
        header('Content-Disposition: attachment; filename="'.basename($file_url).'"');
        header("Content-Transfer-Encoding: binary");
        header('Expires: 0');
        header('Pragma: no-cache');
        header("Content-Length: ".filesize($file_url));
    }
    readfile($file_url);
  • 24-08-2014, 21:27:52
    #6
    sorunum çözüldü ob_start(); fonksiyonu kullanılması gerekmiş kodların üstünde olması yeterliymiş.

    ob_start();
    $DLPath = "files/";
    $DLFile = "turkish.rar";
    header('Content-Disposition: attachment; filename="'. $DLFile .'"');
    readfile($DLPath. $DLFile);