Je vais chercher un fichier avec
$fp = fopen('uploads/Team/img/'.$team_id.'.png', "rb");
$str = stream_get_contents($fp);
fclose($fp);
puis la méthode le restitue sous forme d'image. Mais lorsque fopen () échoue, le fichier n’existant pas, une erreur est générée:
[{"message":"Warning: fopen(uploads\/Team\/img\/1.png): failed to open stream: No such file or directory in C:\...
Cela revient comme JSON, évidemment.
La question est maintenant: comment puis-je attraper l'erreur et empêcher la méthode de renvoyer cette erreur directement au client?
Vous devriez d’abord tester l’existence d’un fichier avec file_exists ().
try
{
$fileName = 'uploads/Team/img/'.$team_id.'.png';
if ( !file_exists($fileName) ) {
throw new Exception('File not found.');
}
$fp = fopen($fileName, "rb");
if ( !$fp ) {
throw new Exception('File open failed.');
}
$str = stream_get_contents($fp);
fclose($fp);
// send success JSON
} catch ( Exception $e ) {
// send error message if you can
}
ou solution simple sans exceptions:
$fileName = 'uploads/Team/img/'.$team_id.'.png';
if ( file_exists($fileName) && ($fp = fopen($fileName, "rb"))!==false ) {
$str = stream_get_contents($fp);
fclose($fp);
// send success JSON
}
else
{
// send error message if you can
}
Vous pouvez utiliser la fonction file_exists () avant d'appeler fopen () .
if(file_exists('uploads/Team/img/'.$team_id.'.png')
{
$fp = fopen('uploads/Team/img/'.$team_id.'.png', "rb");
$str = stream_get_contents($fp);
fclose($fp);
}
[{"message":"Warning: fopen(uploads\/Team\/img\/1.png): failed to open stream: No such file or directory in C:\...
l'erreur est claire: vous avez mis le mauvais répertoire, vous pouvez essayer ce que vous voulez mais cela ne fonctionnera pas. vous pouvez le faire fonctionner avec ceci:
('./$team_id.'png',"rb");
n'oubliez pas ceci: vous ne pouvez pas accéder à un fichier qui ne se trouve pas dans votre dossier "www" .__ (il n'a pas trouvé votre fichier car il vous a donné son nom: le nom provient de la variable $ team_id)