大文件的PHP文件上传错误

时间:2018-02-24 21:50:21

标签: php web file-upload

我正在尝试在我的本地服务器上使用php上传文件并将其保存在当前工作目录中。代码适用于任何大小小于2mb的文件类型但超过此大小会产生错误。我还修改了php.ini文件中的上传和发布大小,但它没有帮助。它给出了4个错误:

  
      
  1. 未定义的索引:第3行的C:\ wamp64 \ www \ project \ upload.php中的temp

  2.   
  3. file_get_contents(C:\ wamp64 \ www \ project \ project):无法打开流:C:\ wamp64 \ www \ project \ upload.php中没有此类文件或目录   在第5行

  4.   
  5. 未定义的索引:第6行的C:\ wamp64 \ www \ project \ upload.php中的temp

  6.   
  7. 未定义的索引:第18行的C:\ wamp64 \ www \ project \ upload.php中的temp

  8.   

最后显示"抱歉,上传文件时出错。"。

我将上传的文件保存在upload.php所在的相同位置。

Upload.php:

<?php
$target_dir = getcwd();
$target_file = $target_dir .'\project'. basename($_FILES["temp"]["name"]);
$uploadOk = 1;
echo file_get_contents($target_file);
if ($_FILES["temp"]["size"] > 5000000000) 
{
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}

if ($uploadOk == 0) 
{
    echo "Sorry, your file was not uploaded.";
} 
else 
{
    if (move_uploaded_file($_FILES["temp"]["tmp_name"], $target_file)) 
    {
        echo "The file ". basename( $_FILES["temp"]["name"]). " has been 
uploaded.";
    } 
    else 
    {
        echo "Sorry, there was an error uploading your file.";
    }
}
?>

2 个答案:

答案 0 :(得分:0)

尝试这样做:(确保创建任何点)

1-确保表单中的method属性的值为POST,enctype的值为multipart/form-data

2-此行echo file_get_contents($target_file); 不在此处 因为您是在上传文件之前放置的,建议您将其放在代码的末尾

3 - 如果您的代码

,请在开头添加此条件
if($_POST["submit"]
{
//Your Code here;
}

并确保name属性已添加到表单上的提交按钮

4-确保project文件夹存在于包含upload.php文件的同一文件夹中 5 -

  

非常重要:

确保在&amp;之前添加\\ 在<{em> 项目之后$traget_file变量成为

$target_file = $target_dir .'\\project\\'. basename($_FILES["temp"]["name"]);

完整代码与我合作

<?php
if($_POST["submit"])
{
$target_dir = getcwd();
$target_file = $target_dir .'\\project\\'. basename($_FILES["temp"]["name"]);
$uploadOk = 1;
echo file_get_contents($target_file);
if ($_FILES["temp"]["size"] > 5000000000)
{
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}

if ($uploadOk == 0)
{
    echo "Sorry, your file was not uploaded.";
}
else
{
    if (move_uploaded_file($_FILES["temp"]["tmp_name"], $target_file))
    {
        echo "The file ". basename( $_FILES["temp"]["name"]). " has been
uploaded.";
    }
    else
    {
        echo "Sorry, there was an error uploading your file.";
    }
}
}
?>
<html>

<head>
    <title></title>
</head>

<body>
  <form action="first.php" method='post' enctype="multipart/form-data">
<input type="file" name="temp" />
  <input type="submit" name="submit" value="upload" />
  </form>
</body>

</html>

我希望我能帮到你

由于

答案 1 :(得分:-1)

查看php.ini文件中的这两个参数,WAMPServer配置了

upload_max_filesize = 2M
post_max_size = 8M

upload_max_filesize增加到要允许卸载的最大文件的大一点。如果您打算一次上传多个文件,可以大得多。

然后将post_max_size增加到您设置upload_max_filesize的数字LARGER,例如

upload_max_filesize = 80M
post_max_size = 85M

post_max_size必须大于upload_max_filesize,因为文件在POST缓冲区以及表单中可能存在的所有其他字段中传输

  

注意使用wampmanager图标来编辑php.ini,这样可以确保您编辑正确的php.ini有2个。

wampmanager -> php -> php.ini
  

还记得在编辑并保存php.ini

后重启Apache
wampmanager -> Apache -> Service administration 'wampapache' -> Restart Service