为什么图像上传文件php is_uploaded_file检查?

时间:2011-03-05 07:06:54

标签: php html forms upload

我有一个允许图片上传的html表单,但由于某种原因,现在上传的图片无法通过“is_uploaded_file”检查。

那么为什么上传会失败is_uploaded_file检查?

HTML:

<form enctype="multipart/form-data" id="RecipeAddForm" method="post"
action="/recipes/add" accept-charset="utf-8">
    <!--- Omitted Markup -->
    <input type="file" name="data[Recipe][image]" value="" id="RecipeImage" />
    <!--- Omitted Markup -->
</form>

PHP:

// returns false
echo is_uploaded_file($file['tmp_name'])?'true':'false'; 

我在$ file或$ _FILES数组上进行了转储:

Array
(
    [name] => add or remove.jpg
    [type] => image/jpeg
    [tmp_name] => E:\\xampp\\tmp\\phpB9CB.tmp
    [error] => 0
    [size] => 71869
)

文件大小不是太大,错误是0.那么为什么它会通过is_uploaded_file检查失败?

3 个答案:

答案 0 :(得分:6)

可能是Windows的问题,因为它区分大小写,如果路径不同则不匹配。尝试使用realpath($file['tmp_name'])

答案 1 :(得分:1)

尝试

if (is_uploaded_file($_FILES['data[Recipe][image]']['tmp_name']))

记住$_FILES是保留PHP超全局变量..所以总是用大写写

你可以使用

检索正确的文件路径

$filename = basename($_FILES['userfile']['name']);

注意:为什么你在name属性中使用数组( name =“data [Recipe] [image]”)?

如果没有具体原因,那么alwayz会生成简单的代码

<input type="file" name="RecipeImage" value="" id="RecipeImage" />

并简单地检查

 if (is_uploaded_file($_FILES['RecipeImage']['tmp_name']))

记住KISS

答案 2 :(得分:1)

使用上传的图像(move_uploaded_file)后,函数is_uploaded_file始终返回false。