【问题标题】:When submitting a file on a form, it is not submitted在表单上提交文件时,未提交
【发布时间】:2016-11-25 00:04:03
【问题描述】:

我有一个大学项目的问题,我们要创建图书注册表。到目前为止一切顺利,但是,我们有一个用于插入书籍封面的部分。无论如何都试过了,文件没有发送。我创建了一个新目录来测试,它也没有工作。按照代码:

<form enctype="multipart/form-data" method="post" action="index.php">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input type="file" name="cover"/>
<input type="submit" name="insert" class="btn btn-primary" value="Insert Data">
</form>

<?php
if(isset($_POST['insert'])):
    $destiny = '/' . $_FILES['cover']['name'];
    $tmp_file = $_FILES['cover']['tmp_name'];
    move_uploaded_file( $tmp_file, $destiny);
    var_dump($_FILES);
endif;
?>

当你点击提交而不选择任何文件时,它通常会落入 IF。但是,当提交文件并单击提交时,没有任何反应。只有页面被重新加载。已尝试输入正确的 $destiny 并继续相同的操作。

编辑:

我收到以下错误:

警告:3724451 字节的 POST 内容长度超出了 Unknown on line 0 中 3145728 字节的限制

【问题讨论】:

  • $_FILES 包含有关已上传文件的大量元数据,包括出错时的错误代码。 php.net/manual/en/features.file-upload.errors.php 还启用错误报告和/或日志记录,如果有任何显示,请将其包含在问题中。
  • 顺便说一句,您似乎在没有任何验证的情况下信任用户输入。这是一个坏主意。例如,我可以制作一个 POST,将文件名设置为 ../../../../../../../../../../../.. /../../etc/passwd 并丢弃你的系统(如果 /etc/passwd 也恰好是全局可写的)
  • @GordonM 这实际上不是我真正的项目。我创建了一个新文件夹只是为了测试东西,就是上面的代码。
  • $destiny 是绝对路径:以“/”开头。您没有在根文件夹中写入的权限。 move_uploaded_file 返回一个 bool 。也可以查看操作是否成功。

标签: php html file-upload


【解决方案1】:

解决了!

感谢@fillipo 和@Masivuye 以及其他人的帮助。

我做了什么:

更改了 php.ini 中的最大大小,在 index.php 中创建了文件夹,并从 HTML 中删除了 max_size 属性。现在工作!

【讨论】:

    【解决方案2】:
        <form enctype="multipart/form-data" method="post" action="index.php">
    
    <input type="file" name="cover"/>
    <input type="submit" name="insert" class="btn btn-primary" value="Insert Data">
    </form>
    
    <?php
    if(isset($_POST['insert'])):
    $target_dir = "uploads/";
    $destiny = $target_dir . basename($_FILES['cover']['name']);
    $tmp_file = $_FILES['cover']['tmp_name'];
    $uploadOk = 1;
    // Check file size
    if ($_FILES["cover"]["size"] > 30000) {
        echo "Sorry, your file is too large.";
        $uploadOk = 0;
    }
    if ($uploadOk == 0) {
            echo "Sorry, your file was not uploaded.";
    // if everything is ok, try to upload file
    } else {
    if (move_uploaded_file($tmp_file, $destiny)) {
            echo "The file ". basename( $_FILES["cover"]["name"]). " has been uploaded.";
        } else {
            echo "Sorry, there was an error uploading your file.";
        }
    }   
    
    var_dump($_FILES);
    endif;
    ?>
    

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 1970-01-01
      • 2015-11-11
      • 2018-04-02
      • 2014-11-05
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 2020-12-03
      相关资源
      最近更新 更多