• 06-12-2015, 20:32:35
    #1
    Merhaba arkadaşlar, imzamda paylaştığım linkte download butonuna tıklandığında php ile resmi download ettiriyorum. Bilgisayarda inen resimler sorunsuz çalışıyor ama mobilden download edince resimler açılmıyor?

    Resmi oluştururken GD kütüphanesini kullanıyorum.
    ImageJPEG ($imgpath,$savepath,100);
    Oluşturduğum resmi indirmek için kullandığım kodlar da şöyle:
    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');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    $oku = readfile($file);
    Yardımcı olabilirseniz sevinirim.
    Cevaplarda lütfen link paylaşmayın.
    Teşekkürler, iyi çalışmalar.
  • 06-12-2015, 20:38:47
    #2
    XYZ
    Kimlik doğrulama veya yönetimden onay bekliyor.
    header('Content-Description: File Transfer');
    header('Content-Type: ' . image_type_to_mime_type(exif_imagetype($file)));
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    $oku = readfile($file);
    Content-type application/octet-stream olduğu için mobil cihazlar dosyanın resim olduğunu anlayamıyor olabilir.

    Yukarıda verdiğim gibi sorun çözülebilir.
  • 06-12-2015, 21:05:42
    #3
    @XYZ; denedim hocam herhangi bi' değişiklik olmadı. Vakit ayırdığınız için teşekkürler.

    Başka fikri olan var mı?
  • 07-12-2015, 07:56:34
    #4
    $file=basename($_GET["file"]); // basename sayesinde klasör linkleri görmez sadece dosya ismini alır.
    if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.$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;
    }else{
     echo $file." Dosya Bulunamadi !";
    }
    kaynak linki

    http://www.limitsizbilgi.com/php-download-kodu.html
  • 07-12-2015, 10:47:04
    #5
    halil2233 adlı üyeden alıntı: mesajı görüntüle
    $file=basename($_GET["file"]); // basename sayesinde klasör linkleri görmez sadece dosya ismini alır.
    if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.$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;
    }else{
     echo $file." Dosya Bulunamadi !";
    }
    kaynak linki

    http://www.limitsizbilgi.com/php-download-kodu.html
    Yazdığınız kodun, benim yazdığım koddan ne farkı var anlamadım.
  • 07-12-2015, 11:20:14
    #6
    codeksper adlı üyeden alıntı: mesajı görüntüle
    Yazdığınız kodun, benim yazdığım koddan ne farkı var anlamadım.
    ben bi fark var diye koymadım size örnek kaynak buldum ayrıca bakarsanız sizinkinden bıraz daha farklılıklar var fakat iyi günler