2017-08-20 22 views
0

cURLでファイルをダウンロードしてファイルに保存しようとしていますが、ページがすべて文字化けして表示されているだけです。私はfopenを使用しますが、リダイレクトに従うことを望んでいます。PHP cURL、ページに文字化けした文字が表示される

<?php 
$url = $_POST["url"]; 
If(empty($url)){header('Location: index.php'); exit;} 
$email = $_POST["email"]; 
$domain = $_SERVER['SERVER_NAME']; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); 
curl_setopt($ch, CURLOPT_MAXREDIRS, 3); 
curl_setopt($ch, CURLOPT_TIMEOUT, 0); 
$dl = curl_exec($ch); 
$filename = basename($url); 
echo "Downloading $url "; 
echo "<br>"; 
echo "to "; 
echo "<br>"; 
$downloadedto = 'http://' . $domain . '/downloads/' . $filename; 

echo "<a href='$downloadedto'>$downloadedto</a>"; 



file_put_contents("downloads/$filename", $dl, 'r', LOCK_EX); 
If(!empty($email)){ 
mail ($email, "Your cloud download is complete!", "Good news! Your cloud download of $filename is finished!, please download it soon before it is auto deleted from our server $downloadedto"); 
} 
?> 
+1

'CURLOPT_RETURNTRANSFER'オプションのヘルプを設定していますか? curl_execはデフォルトでtrue/falseのみを返します – Finwe

+0

私はcurl_setopt($ ch、CURLOPT_RETURNTRANSFER、1);が必要だと思います。あなたの問題を解決するかどうかは分かりませんが、この方法ではファイルの内容ではなく真を返します。 http://php.net/manual/en/function.curl-exec.php – VA79

+1

@ VA79ありがとうございました:) –

答えて

0

@FinweとVA79 @だけではなくデータよりも偽/ trueを返す私は、デフォルトのcURLによるようcurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);を必要と指摘:)

関連する問題