この投稿は、2014-07-25 08:17:46 に easyrecovery8 によって最終的に編集されました 某社の圧縮パッケージ rar 形式の外部リンクネットワークディスクにはホットリンクを検出するためのリファラーがあり、ブログに載せてダウンロードしてもらいたかったのでリファラーを偽造するためにPHPを勉強したのですが、圧縮されたパッケージが文字化けの文字列として出力されてしまいました。テキスト形式です。開く方法についてアドバイスをお願いします。
私のコードは次のとおりです:
<?php<br />$url = '某个连接地址url.rar格式';<br />$ch = curl_init(); //初始化<br />curl_setopt($ch, CURLOPT_URL, $url); //你要访问的页面<br />curl_setopt($ch, CURLOPT_REFERER, '某个来路url'); //伪造来路页面<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); <br /><br />$content = curl_exec($ch); //执行<br />curl_close($ch); //关闭<br />echo $content;<br />?>
-----解決策----- ----これらの結果を rar 形式で保存できれば、それは意味します。内容は正しいです。この場合、ヘッダー情報を出力するだけで済みます:
header("Content-type: application/octet-stream");<br />Header("Content-Disposition: attachment; filename=download.rar" );<br />
------解決策------ - --
これには、ダウンロード アドレス間の関係を自分で分析する必要があります
------解決策---------------- -- --まあ、それはうまくいきません。ヘッダーがテキストになってしまいます。これは次のように行う必要があります
相手はダウンロードを提供しているため、ファイル名やファイル長を含む関連情報は当然提供されています
$url = '/某个连接地址url.rar格式';<br />$ch = curl_init(); //初始化<br />curl_setopt($ch, CURLOPT_URL, $url); //你要访问的页面<br />curl_setopt($ch, CURLOPT_REFERER, '某个来路url'); //伪造来路页面<br />curl_setopt($ch, CURLOPT_HEADER, 1); //要读回 http 头<br />curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'func'); //监听返回的数据<br />curl_exec($ch); //执行<br /><br />function func($ch, $str) {<br /> static $s = '@';<br /> if($s) {<br /> $s = trim($str);<br /> if($s) header($s); //如果是头信息,则发送相应的头<br /> }else echo $str; //否则发送数据<br /> return strlen($str);<br />}<br />
----- -解決策---- ----------------中国語のファイル名が文字化けして表示されるのは正常です
サーバーは gbk または utf-8 である可能性がありますエンコードされている
クライアントも gbk または utf-8 エンコードされている可能性があります
Content-Disposition:attachment; filename=download.rar の形式でヘッダー情報を受信するときに、中国語のファイル名を判断する必要があります。 、必要に応じてクライアントの文字を使用します トランスコーディング用に設定します