我有一个像
这样的表格<form action="send.php" method="post" enctype="multipart/form-data">
<div>
<label for="subject">Subject</label>
<input type="text" name="subject" />
</div>
<div>
<label for="image">Image</label>
<input type="file" name="image" />
</div>
<input type="submit" value="Send" />
</form>
PHP喜欢
echo '<pre>'; print_r($_FILES); echo '</pre>';
if (move_uploaded_file($_FILES['image']['tmp_name'], 'images/' . $_FILES['image']['name'])) {
echo 'ok';
} else {
echo 'error!';
};
我一直得到error
print_r看起来像
Array
(
[image] => Array
(
[name] => Untitled-1.jpg
[type] => image/jpeg
[tmp_name] => /tmp/phpprWdjN
[error] => 0
[size] => 61768
)
)
答案 0 :(得分:4)
激活error reporting,然后您应该会看到move_uploaded_file
抛出的错误,告诉您哪里出错了。
答案 1 :(得分:4)
您的$ _FILES外观文件,错误= 0表示上传成功完成。很可能是权限错误。您可以尝试执行以下操作:
if (!is_writeable('images/' . $_FILES['image']['name'])) {
die("Cannot write to destination file");
}
但是,请注意您使用的是用户提供的文件名,因此如果有人上传“pwn_my_server.php”,您的脚本会将其写入images目录,然后他们只需访问yoursite.com/images/pwn_my_server.php
并控制您的网站。
一般来说,信任$ _FILES数组中的任何内容绝对不是一个好主意,或者直接使用它,因为它的全部内容都在远程用户控制之下。服务器创建的唯一内容是错误代码和tmp_name。其余的可能是恶意的。
答案 2 :(得分:0)
也许问题是'image /'文件夹,你可以在这里设置绝对路径并确保路径是可写的,然后试一试。
答案 3 :(得分:0)
使用以下代码: 1.创建名为'uploads'的目录 2.使用.php扩展名保存文件
现在运行代码。
<?php
if (!empty($_FILES))
{
// PATH TO THE DIRECTORY WHERE FILES UPLOADS
$file_src = 'uploads/'.$_FILES['image']['name'];
// FUNCTION TO UPLOAD THE FILE
if(move_uploaded_file($_FILES['image']['tmp_name'], $file_src)):
// SHOW THE SUCCESS MESSAGE AFTER THE MOVE - NO VISIBLE CHANGE
echo 'Your file have been uploaded sucessfuly';
else:
// SHOW ERROR MESSAGE
echo 'Error';
endif;
}
?>
<form action="" method="post" enctype="multipart/form-data">
<div>
<label for="subject">Subject</label>
<input type="text" name="subject" />
</div>
<div>
<label for="image">Image</label>
<input type="file" name="image" />
</div>
<input type="submit" value="Send" name='submit' />
</form>
:)