【问题标题】:File information from form not passed to php表单中的文件信息未传递给 php
【发布时间】:2016-06-13 21:03:35
【问题描述】:

表格:

<form enctype="multipart/form-data" action="FileUpload.php" method="post">
                    <label for="file" class="myLabel">Select File</label>
                    <input type="file" id="file" name="fileUpload">
                    <input type="submit" class="submit" value="Upload File">

            </form>

php:

if(isset($_FILES['fileUpload'])){
        $uploadName = $_FILES['fileUpload']['name'];
        $uploadTmp = $_FILES['fileUpload']['tmp_name'];
        $fileSize = $_FILES['fileUpload']['size'];
        $fileType = pathinfo($uploadName, PATHINFO_EXTENSION);
        $uploadName = trim($uploadName, "." . $fileType);

        $uploadName = preg_replace("#[^a-z0-9.]#i","",$uploadName);//removes all spaces in their name

        $uploadName = mt_rand(100000,999999) . "____" . $uploadName;//generates random number in front of name so multiple files of the smae name can be uploaded

        if(($fileSize > 100024352638512 )){//check file is less than 10gb   
            die("Error - File to big");
        }

        if(!$uploadTmp){//checks to see if file is selected
            die("No File Selected, Please Upload Again");
        }else{
            move_uploaded_file($uploadTmp,"uploads/$uploadName");//puts file into uploads directory
        }

    $sql = $con->query("INSERT INTO uploads (ID, Time ,Name, Type, Owner) VALUE
    (NULL,CURRENT_TIMESTAMP(),'{$uploadName}','{$fileType}','{$_SESSION['UserID']}')")or die(mysqli_error($con));//inserts file into database

        header("Location:Profile.php");//sends you to profile page
        }

代码执行到最后,但文件没有上传到数据库,我之前有 php 工作,但我改变了输入按钮的工作方式,现在它不起作用。我将不胜感激,因为我还是一个新开发者。

【问题讨论】:

  • 您希望实际文件进入数据库还是只是文件名?

标签: php html


【解决方案1】:

您似乎正在尝试将 NULL 插入您的 ID 列,我假设它是您的主键。

SQL Server, can't insert null into primary key field?

您不能将 NULL 插入主键,而是应该跳过尝试将任何内容放入您的 ID 列。

【讨论】:

    【解决方案2】:

    按照 Lucha Laura 的回答 - 如果文件已成功上传和移动,我会怀疑您插入的值违反了数据库字段的约束。

    在主键中插入NULL在MySQL中是有效的,但其他字段可能配置不正确。检查字段的字段类型、长度和 not_null 要求,并确保它们接受您发送的值。预览实际值的一种简单方法是使用error_log() 将信息发送到错误日志。

    有点不相关 - trim() 没有做你想要完成的事情。查看strstr()preg_replace()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多