Nasıl Firefox "olarak kaydet" çalışıyor düzeltebilirim

5 Cevap php

Biz son zamanlarda görüntüleri ele biçimini değiştirmek götürdü sitemizde Amazon S3 uyguladık. Biz, diskten dosyayı okumak bazı istatistikler kayıt olur bir denetleyici / fotos.php aramak için kullanılan başlıkları belirlemek ve görüntü / jpeg olarak dosyanın içeriğini döndürür.

Tüm S3 kadar Tamam gitti. Fotos.php şimdi 302 Amazon kaynak yönlendirme yapar ve tüm güzel ve çalışma, ama. Htm olarak dosya türünü ayarlar çünkü Firefox bir görüntü kaydedemezsiniz. Ben bu konuda tartışma bulundu ve Firefox'ta bir hata gibi görünüyor:

https://bugs.launchpad.net/ubuntu/+source/firefox-3.0/+bug/207670

Burada sorun (büyük görüntü kaydetmek için deneyin) gösteren bir URL:

http://www.viajeros.com/fotos/el-gran-lago-de-atitlan-y-sus-volcanes/132968

Internet Explorer 6, en az untitled.bmp olarak kaydetmek için çalışır.

Burada fotos.php kullandığımız kod pasajı:

$archivo = $fotos->ObtenerPathFotoAmazon( $url, null );

if (empty($_GET['nocache'])) {
    header('HTTP/1.0 302 Found');
    header("Expires: ".gmdate("D, d M Y H:i:s", time()+315360000)." GMT");
    header("Cache-Control: max-age=315360000");
} else {
    header('HTTP/1.0 307 Temporary Redirect');
}

header('Location: ' . AWS_BUCKET_URL . $archivo);
die;

Bunun için bir çözüm biliyor musunuz?

EDIT: Biz de CloudFront kullanıyor.

5 Cevap

try to specify the content type of the image with header('Content-Type: image/jpeg'); or header('Content-Type: image/png');

belki php içerik türünü (konum web sunucusuna görevi bırakmak) belirtmek izin içerik eğilim eki kullanmak gerekecektir

$ Archivo = $ fotoğraflarının-> ObtenerPathFotoAmazon ($ url, null);

if (empty($_GET['nocache'])) {
   header('HTTP/1.0 302 Found');
   header("Expires: ".gmdate("D, d M Y H:i:s", time()+315360000)." GMT");
   header("Cache-Control: max-age=315360000");
} 

header('Content-Type: image/jpeg');
header("Content-Disposition: attachment; filename='$archivo'");
readfile(AWS_BUCKET_URL .$archivo);
die();

Bu bir hata değil

S3 kendisi saklamak nesne mimeType ne olduğunu bilmiyor. Eğer PUT S3 nesne de Content-Type ve Content-Disposition başlıkları (ve başka ne isteyebilirsiniz) dahil etmek gerektiğinde. Bunu yaparken, S3 bu başlık değerleri ile cevap verecektir zaman, ya da başkası, GET 'ın nesne

(En azından bu bir görüntü anlar rağmen IE de, yanlış türü olarak kaydetmek için çalışıyor), bu hata Firefox ile sınırlı olmadığından, ben S3 dosyası için yanlış MIME-türü dönen olduğunu tahmin ediyorum.

Insanlar diğer forumlarında bu sorduklarında ben this script yönünde onları noktası. Sen bunun hepsini kullanmak zorunda değilsiniz, ancak doğru yönde onun güzel bir işaretçi.

Diğerleri bu kadar iyi cevap gibi ben alışkanlık daha yazmak.

Bir keresinde bu konuda kendimi içine koştu. Ben (zaman) bunun için tek gerçek çözüm URL'nin sonuna "#. Jpg" gibi bir şey eklemek olduğunu düşünüyorum. Bu senin işleme etkilemez ve jpg indirme türünü ayarlamak için FF zorlar.