ホームページ  >  記事  >  バックエンド開発  >  PHPファイルのアップロードに関する問題

PHPファイルのアップロードに関する問題

WBOY
WBOYオリジナル
2016-06-13 13:09:39795ブラウズ

PHP ファイルのダウンロードの問題

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
function download_file($filename){
     //below to provide the download
                    if (file_exists($filename)) {
                        
                         $file = fopen($filename);
                    header('Content-Description: File Transfer');
                    header('Content-Type: application/octet-stream');
                    header('Content-Disposition: attachment; filename=' . basename($filename));
                    header('Content-Transfer-Encoding: binary');
                    header('Expires: 0');
                    header('Cache-Control: must-revalidate');
                    header('Pragma: public');
                    header('Content-Length: ' . filesize($filename) . ' bytes');
                    //ob_clean();
                    //flush();
                    readfile($filename);
                    fclose($file);
                       exit;
}
$this->_redirect('xxxxxxx');






上記は、インターネットでよく使用される PHP ファイルをダウンロードするためのコードです。これは、ボタンをクリックしてダウンロードとページのコンテンツの更新を同時に行いますか? つまり、ファイルのダウンロード後に後続のコードを実行し続ける必要があります。つまり、ダウンロードが完了した後、ステートメント $this->_redirect('xxxxxxx'); が実行されません。何か解決策はありますか?

-----解決策---------

$file = fopen($filename);
readfile($filename);
fclose($file);
ファイルを直接読み取るだけです。


このリダイレクトは JS でのみ実行できますが、onclick はフォーカスを失った後に変数をチェックすることしかできません。


C/C++ コード
[ユーザー:root 時刻:23:25:51 パス:/home/apache/web]$ catindex.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<スクリプトタイプ="text/javascript">
var is_click = false;
</スクリプト>
<a href="index.php" onclick="is_click = true;" onMouseOut="if (is_click) location.href='main.php';">aaa</a>
</ボディ>
</html>
<br><font color="#e78608">------解決策---------</font><br>いいえ、HTTP セッションは 1 種類のデータ <br> であり、ダウンロードはユーザーに対して非同期です
<br><font color="#e78608">------解決策---------</font><br>保存ではなく開いてください。これはファイルが原因ですたとえば、Chrome では PDF ファイルが保存されずに表示されます。 <br>追加の Header 応答ヘッダーを追加する必要があります: <br>Content-Disposition:attachment; filename="$filename"<br><br>追加方法としては、生成されたヘッダーを PHP に読み取らせて出力させることができます。ファイル を作成し、 header 関数を使用します。 <br>または、ファイルを強制的にダウンロードするように Web サーバーを設定することもできますが、その設定方法がわかりません <div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHP学習メモ(2)次の記事:PHP学習メモ(2)