文件名没有显示,但img上传了吗?

时间:2013-03-15 21:08:01

标签: php

$path= $_SERVER['DOCUMENT_ROOT'] . "/img/".$HTTP_POST_FILES['fileupload']['name'];
if($ufile !=none)
{
   if(copy($HTTP_POST_FILES['fileupload']['tmp_name'], $path))
   {
       echo "Successful<BR/>";

       echo "File Name :".$HTTP_POST_FILES['ufile']['name']."<BR/>";
       echo "File Size :".$HTTP_POST_FILES['ufile']['size']."<BR/>";
       echo "File Type :".$HTTP_POST_FILES['ufile']['type']."<BR/>";
       echo "<img src=\"$path\" width=\"150\" height=\"150\">";
   }
   else
   {
       echo "Error";
   }
}

die();

为什么

echo "File Name :".$HTTP_POST_FILES['ufile']['name']."<BR/>"; 

不给我文件名?其他信息也没有得到回应

如果这是一个愚蠢的问题,我很抱歉,它与表格方法有关吗?

2 个答案:

答案 0 :(得分:3)

您只是假设上传成功了。如果上传失败,$HTTP_POST_FILES(或 正在使用的$_FILES)仍然可以填充数据。你必须检查['error']参数,然后才能上传任何内容,例如

if ($_FILES['ufile']['error'] !== UPLOAD_ERR_OK) {
    die("Upload failed with error code " . $_FILES['ufile']['error']);
}

错误代码在此处定义:http://www.php.net/manual/en/features.file-upload.errors.php

同样,您的代码不安全,允许恶意用户在您想要的服务器上任意编写文件。不要在上传的文件上使用copy()move_uploaded_file()存在是有原因的。用它。

答案 1 :(得分:0)

使用move-uploaded-file移动上传的文件。

不推荐使用HTTP_POST_FILES,请使用$ _FILES。

http://www.php.net/manual/en/features.file-upload.php这应该可以帮到你。