2013-05-13 180 views
0

我在创建一个PHP文件上传脚本的麻烦:错误上传文件thorugh PHP脚本

的index.php:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
<title>File Upload</title> 
</head> 

<body> 
<form method="post" action="upload_file.php" enctype="multipart/form-data"> 
<label for="file"><h3>File: </h3> </label> 
<input type="file" name="file" id="file" /><br /> 
<input type="submit" name="Upload" /> 
</form> 

</body> 

</html> 

upload_file.php:

<?php 
$restricted_extensions = array("htm", "html", "php", "asp", "aspx", "js"); 
$file_extension = end(explode(".", $_FILES["file"]["name"])); 

if ($_FILES["file"]["error"] > 0) 
{ 
    echo("<h2>An error occured!</h2>"); 
    echo("<h2>Return Code: " . $_FILES["file"]["error"] . "</h2><br>"); 
} 
elseif ($_FILES["file"]["error"] == 0) 
{ 
    $is_valid_extension = true; 


    foreach ($restricted_extension as $extension => $value) 
    { 
     if ($file_extension == $extension) 
     { 
      $is_valid_extension == false; 
     } 

     if (!$is_valid_extension) 
     { 
      echo("<h2>The files extension " . $file_extension . " is not allowed!</h2>"); 
     } 
    } 
} 
else 
{ 
    echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 

    if (file_exists("upload/" . $_FILES["file"]["name"])) 
    { 
     echo $_FILES["file"]["name"] . " already exists. "; 
    } 
    else 
    { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "upload/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
    } 
} 
?> 

错误消息:

说明:未定义指数:文件在C:\的Inetpub \ wwwroot的\上线upload_file.php 3个

严格的标准:只有变量应该通过在C基准进行传递:\的Inetpub \ wwwroot的\上线upload_file.php 3

说明:未定义指数:文件在C:\的Inetpub \ wwwroot的\线upload_file.php 5

说明:未定义指数:文件在C:\的Inetpub \ wwwroot的\第10行

upload_file.php

注意:未定义的变量:C:\ inetpub \ wwwroot \ upload_file.php中的restricted_extension第15行

警告:(c)中提供的foreach参数无效:\的Inetpub \ wwwroot的\ upload_file.php第15行

+0

似乎upload_file.php中缺少一部分内容。请发布整个文件,看看问题出在哪里 [编辑]对不起 - 没有滚动;) – hannenz 2013-05-13 15:26:40

+0

最后两个错误 - 你有一个错字(应该是restricted_extensions而不是restricted_extension)。另外,试着把'var_dump($ _ FILES);退出;'在upload_file.php开头,并显示您在尝试上传文件后得到的内容。 – 2013-05-13 15:34:41

回答

0

我无法重现这些错误,但是你必须在变量的命名错字$ restricted_extensions。在代码后面的第一行最后要注意's',最后要注意's'。

由于错误消息引用了未设置的数组键,因此您的上传似乎无法工作。由于您的HTML标记似乎没问题(并且它可以在我的设置中使用),我怀疑它是一些服务器设置(Apache或您使用的是什么?)或php.ini问题。请检查允许上传的相关设置。

+0

我使用互联网信息服务,今天把所有东西都放好了,我认为它没事 – 2013-05-13 15:53:39

-1

在端的部分(爆炸())的事..ü应该第一分配爆炸()导致另一个变量,然后传递该变量,像这样end()函数,

$变量=爆炸(somethig ..); $ variable2 = end($ variable);

至于其他错误,也许这可能有助于解决其中的一些..

顺便说一下它的工作对我和我没有时间去了解为什么它是一个真正的quick.at那个时候:)