以下のコード、ダウンロードしたコードのサイズが 0 バイトしかないのはなぜですか?
if( $attachment['attachment'] )
{
$file = 'uploads/resource/'.$attachment['attachment'];
if( file_exists( dirname($file) ) ) )
{
$ fileName = Basename( $file );
header("Content-type: application/force-download");
header("Accept-Ranges"); : バイト" );
header("Accept-Length: ".filesize( $file ));
header("Content-Disposition:attachment; filename=" . $fileName);
readfile($file);
}
}
ディスカッションへの返信 (解決策)
$attachment['attachment'] に値があり、ファイルが存在することを確認してください。
間違いなく、間違いなく、間違いなく、ローカルでテストしました。その理由を知ってください。 。 。
header('Content-length: '.filesize($file));
header('Content-length: '.filesize($file));
まだ 0 バイトです。 。 。 。 。押し下げられた。 。
プログラムは 2 番目の if を実行しませんでした。 。 。
if( file_exists( dirname($file) ) )
判断しているのは、ファイルが存在するかどうかではなく、ディレクトリが存在するかどうかです。そのため、ファイルが存在しない場合、ダウンロードされたコンテンツは空である可能性があります
if( file_exists( dirname( $file) ) )
次のように変更された場合: if( file_exists ( $file) )、これもいいえ。 。 。 。
2 番目の if を入力しなかった場合は、uploads/resource/ ディレクトリが存在せず、もちろんファイルも存在しないことを意味します。
2 番目の if を入力しなかった場合は、uploads/resource/ ディレクトリが存在せず、もちろんファイルも存在しないことを意味します。
$file_dir = '/webfolder/hz/uploads/resource/';
$file_name = $attachment['attachment'];
これにより、ファイルが見つからないことが示されます。 $file='123.docx';
127.0.0.1/webfolder/hz/resource/123.docx のように直接ダウンロードしても問題ありません。
私の PHP ファイルとファイルが保存されているフォルダーは両方とも hz フォルダー内にあります。 。
$file_dir = '/webfolder/hz/uploads/resource/';
$file_dir = '/webfolder /hz/uploads/resource/';
$file_dir = 'd:/cede/webfolder/hz /uploads/resource/'; これも機能しません
10 階の snmr_com からの返信を引用します: $file_dir = '/webfolder/hz/uploads/resource/'; これはシステムのルート ディレクトリです。 、Web サイトのルート ディレクトリではありません
$file_dir = 'd:/cede/webfolder/hz/uploads/resource/'; これも試してみました。いろいろな道がありますが、うまくいきません、ヒーローたち、助けてください! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
$file_dir = '/webfolder/hz/uploads/resource/';
$file_name = $attachment['attachment'];
これは、ファイルが見つからなかったことを示します。私は直接開きました ブラウザに移動することもできます (例: $file='123.docx';
127.0.0.1/webfolder/hz/uploads/resource/123.docx) ダウンロードしても問題ありません。
echo $file; // 試してみましょう
$file_dir = $file_name ;ファイルが見つからないというメッセージが表示されますが、 $file='123.docx';
127.0.0.1/webfolder/...
echo $file to get /webfolder のようにブラウザに直接入力できます。 /hz/uploads/resource /123.docx
127.0.0.1/webfolder/hz/uploads/resource/123.docx このようにダウンロードしても問題ありません。
127.0.0.1/webfolder/hz/uploads/resource/123.docx このようにダウンロードしても問題ありません。
それで、あなたのプログラムはどこにありますか? (echo __FILE__; 見てください)
echo __FILE__; Get D:Codewebfolderhzpublic_attach_down.php、パスは正しいです
プログラム
D:Codewebfolderhzpublic_attach_down.php
つまり、ドキュメントは
D:/Code/webfolder /hz/uploads/resource /123.docx
このうち、D:/Code が Web サイトのルートです
まずはテストしてみてください
プログラム
D:Codewebfolderhzpublic_attach_down.php
つまり、ドキュメントは
D:/Code/webfolder/hz/uploads/resource/123 .docx
このうち、D:/Code は Web サイトのルートです
まず PHP code?12345678910$file = 'D:/Code/webfolder/hz/ Uploads/re......
いや、if 内のプログラムは実行されないですよね?
フレームワークとは何ですか?
別のファイルを作成してテストすることはできませんか?
別のファイルを書いてテストすることはできませんか?
別のファイルでも動作しません。 。 。
スクリーンショットを撮ったほうがいいです
スクリーンショットを撮ったほうがいいです
これはサイトのパスです
なぜいつも webfolder と言うのですか?
なぜいつも webfolder と言うのですか?
赤い部分は単なる例です。コードでは、htdocs_33594_v6 を書きました
23 階の xuzuning からの返信を引用: D:/Code/htdocs_33594_v6/hz/uploads/resource/123.docx
赤い部分は単なる例です。コードでは htdocs_33594_v6
$file = 'D:/Code/htdocs_33594_v6/uploads/public/20130420071624_1761_upload_case.docx'; と書きました。
if( file_exists( $file ) ) {
$fileName = Basename( $file );
header("Content-type: application/force-download");
header( " Accept-Ranges: bytes");
header("Accept-Length: ".filesize( $file ));
header("Content-Disposition:attachment; filename=" . $fileName);
readfile( $file ) ;
}
この方法では、通常は別のファイルでダウンロードできますが、iframe ではダウンロードできません。これは奇妙なことです。 ! ! ! !
問題を解決するプロセスが最も興味深いです。
問題を解決するプロセスが最も興味深いです。
この楽しみは悔しすぎる。 。
計画中です
計画中です
りー