0
$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/>"; 

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

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

4

2 回答 2

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()存在是有原因的。用它。

于 2013-03-15T21:11:43.883 回答
0

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

HTTP_POST_FILES 已弃用,请使用 $_FILES。

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

于 2013-03-15T21:13:23.920 回答