Nasıl başlatabilirim / PHP veya başka bir dilde dışarıdan bulunan dosyalar için bir indirme zorlamak?

4 Cevap java

Görüntüleri veya dıştan ikamet diğer dosyaları varsa bir kullanıcı bunun üzerine tıkladığınızda, nasıl bağlantı indirmek için tarayıcı zorlamak mı?

Kullanımı "Content-disposition: eki;" başlık bu yapardı, ama okuma ve yerel dosyasını almadan dışarıdan bulunduğu dosyalar için çalışmıyor.

4 Cevap

Önce sunucu üzerinde kaynak yüklemek zorunda olacak. Ayrıca bazı önbelleğe yapmak isteyebilirsiniz:

<?php
  header("Content-disposition: attachment; filename=myfile.jpg");
  echo file_get_contents("http://host.tld/path/to/myfile.jpg");
?>

Bu, mümkün değildir. Sen şu anda istenen farklı bir kaynak işlemek için nasıl bir istemci dikte edemez.

Sadece dış dış dosyasını alıp müşteriye geçmek için bir proxy kullanabilirsiniz.

Ben size HTTP başlıklarını kontrol değilse bir dosya yüklemeyi zorlamak mümkün olduğunu sanmıyorum. Content-disposition: attachment bunu gerçekleştirmek için bildiğim tek yoludur.

Bu muhtemelen işe yaramayacak olsa da, sadece benim tahminim Content-disposition bir Location başlığı ile birleştirmek için çalışıyor olurdu:

Content-disposition: attachment; filename=myfile.jpg
Location: http://www.somesite.com/myfile.jpg

(Muhtemelen geçersiz ve / veya sadece kötü uygulama uzun atış, var)

Ben bahsedilen "Content-Bırakma" başlığının yanı sıra türü zorlama bir arada kullanın:

header("Content-type: attachment/octet-stream");
header('Content-disposition: attachment; filename="'.$filename.'"');