cURL ile bir kafa talebi yapmayı düşünüyordum, bunun yolunun olup olmadığını merak mı ediyordum?PHP'de uzak dosyadan dosya almanın en kolay yolu?
cevap
Evet. Dosya uzak olduğu için, Content-Length
başlığının değerine tamamen bağımlısınız (dosyanın tamamını indirmek istemediğiniz sürece). curl_setopt($ch, CURLOPT_NOBODY, true)
ve curl_setopt($ch, CURLOPT_HEADER, true)
'u isteyeceksiniz.
HEAD isteği göndermek için curl kullanmanın güzel bir olasılık olduğunu tahmin ediyorum;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://sstatic.net/so/img/logo.png');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
var_dump($size);
Ve alacak: Böyle bir şey muhtemelen yapacağını
float 3438
Eğer bir HEAD isteği kullanarak ve bütün dosyayı indirirken değildir, Bu şekilde - yine sen bağlıdır uzak sunucu doğru İçerik uzunluğu üstbilgisi gönderir.
yaklaşık filesize
kullanmak olacaktır düşünebilir Başka bir seçenek ... Ama bu başarısız olur: dokümantasyon (alıntı) devletler: PHP 5.0.0 itibariyle
, bu Bazı URL sarmalayıcılarda işlevi de kullanılabilir. listelerine ait listelerine ait
List of Supported Protocols/Wrappers10 numaralı başvuruya bakın; bu paketler, stat() işlev ailesini destekler. Eğer denerseniz
maalesef
HTTP and HTTPS wrappers ile
stat()
desteklenmez
Ve ...
, böyle bir hata alırsınız:
Warning: filesize() [function.filesize]: stat failed
for http://sstatic.net/so/img/logo.png
Çok kötü :-(
HEAD isteği kullanma ve Content-Length
kontrol yapmak standart bir yoludur, ancak sunucu bunu desteklemiyor olabilir beri, genel olarak buna güvenemez. Content-Length
başlığı isteğe bağlıdır ve ayrıca sunucu HEAD yöntemini bile uygulayamayabilir. Hangi sunucuyu araştırdığınızı biliyorsanız, işe yarayıp yaramadığını test edebilirsiniz, ancak genel bir çözüm olarak kurşun geçirmez değildir. Eğer yapabilirsiniz kurşun geçirmez bir çözüm gerek yoksa
sadece yapın:
strlen(file_get_contents($url));
Bu işe yarayacak, ancak önce dosyayı da indirecek. Muhtemelen, ağ üzerinden getirmeden önce boyutunu bilmek istiyor. – troelskn
bununla KISS prensibini
$head = array_change_key_case(get_headers("http://example.com/file.ext", TRUE));
$filesize = $head['content-length'];
Şimdiye kadar en iyi cevap. Güzel bitti. –
Bu komut benim için bir 'içerik uzunluğu' anahtarını döndürmez, burada döndürdüğü dizi var: ''connection' => string 'close' (uzunluk = 5) 'date' => string 'Tue, 03 Haz 2014 20:55:55 GMT '(uzunluk = 29) ' sunucu '=>' Microsoft-IIS/6.0 'dizesi' (uzunluk = 17) 'x-powered-by' => string 'ASP.NET '(uzunluk = 7) ' x-aspnet sürümü '=> dize' 4.0.30319 '(uzunluk = 9) ' önbellek denetimi '=> dize' özel '(uzunluk = 7) ' içerik türü '=> string' image/gif ' –
Hızlı soru, neden array_change_key_case? – mario
- 1. tcl: Dizeden numara almanın en kolay yolu?
- 2. Kafka - En Son Ofset Almanın En Kolay Yolu
- 3. Başlıkları Ruby'deki bir CSV dosyasından almanın en kolay yolu nedir?
- 4. Python: Dict'tan değerlerin listesini almanın en kolay yolu?
- 5. PHP - URL'de yazılan $ _GET parametreleri dizesini almanın en kolay yolu
- 6. Temel Değer çifti için Enum'u almanın en kolay yolu
- 7. Bir haritanın alt-haritasını almanın en kolay yolu nedir
- 8. Karakterle başlamayan tüm dizeleri almanın en kolay yolu nedir?
- 9. Javascript'te sadece bir sayının işaretini almanın en kolay yolu nedir?
- 10. Şehir Kodu'ndan Posta Kodu almanın en kolay yolu
- 11. Bir .NET uzak sunucu nesnesine bağlanmanın en kolay yolu nedir?
- 12. Matlab: Standart temel vektörlerini almanın kolay yolu?
- 13. Uzak sunucudan bir dosya almanın ve php'yi kullanarak yerel sunucuya kopyalamanın en iyi yolu
- 14. Anketi oluşturmaya çalışmanın en kolay yolu Sonuçları
- 15. Bir dosyayı indirmenin en kolay yolu?
- 16. Masaüstünde javascript programlarını yazmanın en kolay yolu?
- 17. Kabuk simgesini almanın en hızlı yolu
- 18. Linux'ta makine kimliği almanın en iyi yolu?
- 19. Symfony'de ServerName'i almanın kolay bir yolu var mı?
- 20. mnesia şemasını güncellemenin en kolay yolu nedir?
- 21. P/Invoke kodu oluşturmanın en kolay yolu?
- 22. Blob'u bayt dizisine dönüştürmenin en kolay yolu
- 23. SQL sütununa veri eklemenin en kolay yolu
- 24. ComboBox Öğelerini Yenile En kolay yolu
- 25. Bir çizgiyi canlandırmanın en kolay yolu nedir?
- 26. Tetikleyicilerde olumsuzlama yapmanın en kolay yolu nedir?
- 27. Koleksiyona diziyi dönüştürmenin en kolay yolu?
- 28. En Kolay Yolu PHP ile Algılama?
- 29. Kumaşın çıkışını baskılamanın kolay yolu?
- 30. Seçilen metni yalnızca metin girişlerini içeren bir açılan kutuya almanın en kolay yolu nedir?
evet şu iyi çözüm: http: // php. net/manual/tr/function.get-headers.php – Merlinox