2016-06-01 10 views
0

私はエラーを取得しています。私は添付ファイルを読もうとしています。それはほとんどのファイルで完璧に動作しますが、私はこのエラーを殆ど受けません。ファイルのフォーマットは同じで、読み込み元の場所が正しい。私はWindowsエクスプローラでそれをテストしました。 readfile(C:\Users\Public\asdgasd\4sf3\Suppliers\saf342\Files\Revit\2016\Seinätikas.rfa): failed to open stream: No such file or directory in C:\xampp\htdocs\web\downloadattachment.php on line 58PHPのReadFileエラー

+0

明らかに、ファイルシステムにそのようなファイルはありません。このファイルが存在する場合は、readfile()を呼び出す前にチェックしてください。 – Alex

+0

私はそれを確認していました。 var_dump(file_exists($ attachment_location));: – Earl

+0

いいえ、私はこのような何かをするためにあなたのことを意味しました これは、phpがこのファイルを見るかどうかを指示します。 – Alex

答えて

1

、あなたはそれが、ファイルがあなたの(Windowsの場合)ディレクトリ構造に格納されている方法を認識できるように、PHPが正しい内部文字セットとエンコーディングで動作していることを確認する必要があります。何がcharacter set your windows system is usingかを確認し、同じ文字セットをPHP internal encodingに使用してください。

編集:電子メールと正しいエンコーディングにconvert the filename$varから

  • オープンファイルのリファレンス:

    ロジックプロセスは、になるであろう。

  • を開くためにreadfile関数に$varを渡すために進んでfile_existsチェックを行います。
0

あなたは$ファイル名と$ attachment_locationのコンテンツを提供してください可能性:私は

が警告を取得

 header('Content-Description: File Transfer'); 
     header('Content-Type: application/octet-stream'); 
     header('Content-Disposition: attachment; filename="' . $filename .'"'); 
     header('Content-Transfer-Encoding: binary'); 
     header('Expires: 0'); 
     header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
     header('Pragma: public'); 
     header('Content-Length: ' . filesize($attachment_location)); 
     ob_clean(); 
     flush(); 
     readfile($attachment_location);  
     exit(); 

これは誤りである:これは、私はそれを読んでいる方法です。

あなたはこれで、あなたのコードを拡張してもらえ:チェックする

if (file_exists($file)) { 
Your code goes here 
.... 
exit(); 
} 

さらに物事を:(あなたがwebseverを使用している場合)のファイルは、Webサーバのユーザーによって読み取り可能です。 ファイル名に特殊な文字が含まれているファイルに問題がありますか?参照のJohndodoの一種として

0

あなたは、ファイルがファイルシステムに存在するかどうかを見るためのチェッカーを置く必要があります。

if (!file_exists($filePath)) { 

    // Throw an exception or do something for alert the wrong path. 
    throw new Exception('File with this path is not available.'); 

} else { 

    // Do your amazing stuff here 

} 
+0

))フォルダの名前を変更します。 – Martin

関連する問題