2016-03-21 20 views
0

varsayalım tarafından Tarayıcıda Görüntülenebilir Yapılmıştır Dosya kullanarak başlıkları sayfasında görüntülenir bir dosya var olduğunu İndirilmesi Diğer yol? Üstbilgi

Bu çalıştı ama boş bir dosya indirir:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_NOBODY, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_URL, $url); //specify the url 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
$head = curl_exec($ch); 

header('Content-Disposition: attachment; filename="' . basename($url) . '"'); 
header("Content-Length: " . $url); 
header("Content-Type: application/octet-stream"); 

Ben file_get_contents kullanarak deneyler() ama muhtemelen yine yanlış bir yoldur.

Herkes yardımcı olabilir mi? Şu anda yalnızca başlıkları curl ile değil, gerçek içeriğin (gövdenin) kendisi ile getirdiğinizde

cevap

0

. Eğer

curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_NOBODY, false); 

için ikili içeriği alıp edeceğini değiştirdiğinizde

: Artık diğeri için daha önceden alınan dosya indirilebilir olmasını istiyorsanız

(İçerik eğilim satır içi hiçbir sorun olmalı) kullanıcılar, sadece yazdırabilirsiniz.

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_NOBODY, false); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_URL, $url); //specify the url 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
$body = curl_exec($ch); 

header('Content-Disposition: attachment; filename="EXAMPLE_FILE.txt"'); 
header("Content-Length: " . strlen($body)); 
header("Content-Type: application/octet-stream"); 

echo $body; 
+0

Teşekkürler! Bu doğru olsa da hala problemimi çözmedim. Hala boş bir dosya indiriyorum. "Content-disposition: inline" dosyasının nasıl indirileceğini bilen varsa lütfen yardım edin! – Ivannnnn

+0

Tamam, eğer örneğimde curl komutuyla getirmeyi denerseniz, bedeniniz boş mu? Bu durumda, kaynak dosyanın kendisi ile ilgili bir sorun olabilir (kaynak dosyayı doğrudan tarayıcı üzerinden almak mümkün mü?). Ayrıca CURLOPT_HEADER değerini tekrar true olarak ayarlamaya ve yanıtı yazdırmaya çalışabilirsiniz (örneğimde $ body). Belki daha fazla bilgi görürüz. Ve sonunda - web sunucusu hata günlüğünü kontrol edin, bazen bu soruna neden olabilecek her şey için ipuçları bulabilirsiniz –

İlgili konular