ホームページ > バックエンド開発 > PHPチュートリアル > 基本的な基本的な質問、問題が見つからない、混乱しています

基本的な基本的な質問、問題が見つからない、混乱しています

WBOY
リリース: 2016-06-23 14:06:20
オリジナル
885 人が閲覧しました

以下のコード、ダウンロードしたコードのサイズが 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'] に値があり、ファイルが存在することを確認してください。

$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/';

これは、Web サイトのルート ディレクトリではなく、システムのルート ディレクトリです


$file_dir = '/webfolder /hz/uploads/resource/';

これは、Web サイトのルート ディレクトリではなく、システムのルート ディレクトリです。



$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 = '/webfolder/hz/uploads/resource/';

$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 このようにダウンロードしても問題ありません。

それで、あなたのプログラムはどこにありますか? (__FILE__ をエコー; 見てください)

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 内のプログラムは実行されないですよね?

フレームワークとは何ですか?
別のファイルを作成してテストすることはできませんか?

フレームワークとは何ですか?

別のファイルを書いてテストすることはできませんか?


別のファイルでも動作しません。 。 。


つまり、指定したパス情報が間違っています。

スクリーンショットを撮ったほうがいいです

つまり、指定したパス情報が間違っているということです。

スクリーンショットを撮ったほうがいいです




これはサイトのパスです

D:/Code/ htdocs_33594_v6/hz/uploads/resource/123.docx

なぜいつも webfolder と言うのですか?

D:/Code/htdocs_33594_v6/hz/uploads/resource/123.docx

なぜいつも 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 ではダウンロードできません。これは奇妙なことです。 ! ! ! !

問題を解決するプロセスが最も興味深いです。

問題を解決するプロセスが最も興味深いです。

この楽しみは悔しすぎる。 。

計画中です

計画中です

りー

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート