我在使用$ _FILES和file_get_contents时遇到了一些麻烦。
$nomFichier = $_FILES['pieceJointe']['name'];
echo is_readable($_FILES['pieceJointe']['tmp_name']);
echo $_FILES['pieceJointe']['error'];
if(file_get_contents($_FILES['pieceJointe']['tmp_name']) == false)
{
echo "impossible de lire le fichier.<br/>";
}
else
{
// store the file into a BLOB field in my database
}
is_readable display&#34; 1&#34;,$ _FILES [&#39; pieceJointe&#39;] [&#39; error&#39;]表示0。 但是file_get_contents返回false。
我注意到只有名称中包含重音的文件才会发生。 一切都工作正常,只有字母/数字文件名。
我错过了什么吗?
ps:我是法国学生,不专业,对不起我的英语:oTHX!
答案 0 :(得分:0)
使用var_dump
查看is_readable()
的实际值。 &#34; 1&#34;您看到的实际上是$_FILES['pieceJointe']['error']
的输出,这意味着您尝试上传的文件太大。请参阅http://www.php.net/manual/en/features.file-upload.errors.php。
答案 1 :(得分:0)
我猜你的php.ini文件的file_get_contents函数和open_basedir指令存在一些冲突:
http://www.php.net/manual/en/ini.core.php#ini.open-basedir
在读取文件之前尝试使用move_uploaded_file函数。 它会将上传的文件从服务器的临时目录移动到指定的目录,(open_basedir指令只影响move_uploaded_file的目标参数)
答案 2 :(得分:0)
$ _FILES ['pieceJointe'] ['tmp_name']不是文件名,而不是有效的完整路径吗? 也许在打开文件之前先用move_uploaded_file移动文件。