getimagesize():文件名不能为空

时间:2017-01-30 14:56:28

标签: php mysql

我在这里试图学习一些PHP但我现在遇到一些问题我的代码现在我正试图解决“getimagesize():文件名不能为空”但还有很多其他像:/ - 未定义的变量:date / - 未定义的变量:imgData / 是的,我已经尝试过其他代码,仍然有同样的问题/

所以这是我的代码。

     <?php
    $link = mysqli_connect("blah", "blah", "blah", "blah");
    if($link === false){
        die("ERRRO: Não foi possivel a conexão com a base de dados. " . mysqli_connect_error());
    }       
            if(!empty($_FILES['userImage']['tmp_name']) 
         && file_exists($_FILES['userImage']['tmp_name'])) {
        $imgData= addslashes(file_get_contents($_FILES['userImage']['tmp_name']));
    }
            $imageProperties = getimageSize($_FILES['userImage']['tmp_name']);
            $portal = mysqli_real_escape_string($link, $_POST['field1']);
            $datacri = mysqli_real_escape_string($link, $_POST['field2']);
            $datacri = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
            $datapub = mysqli_real_escape_string($link, $_POST['field3']);
            $datapub = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
            $titulo = mysqli_real_escape_string($link, $_POST['field4']);
            $keyword = mysqli_real_escape_string($link, $_POST['field5']);
            $hashtags = mysqli_real_escape_string($link, $_POST['field6']);
            $pedido = mysqli_real_escape_string($link, $_POST['field7']);
            $autor = mysqli_real_escape_string($link, $_POST['field8']);
    if (!$portal) { 
    echo '<script type="text/javascript"> alert("Preencha todos os campos "); </script>';
    mysqli_close($link);
    }



$sql = "INSERT INTO pedidos (p_portal, p_datacri, p_datapub, p_titulo, p_titulo, p_keywords, p_hashtags, p_imageType, p_imageData, p_pedido, p_autor)
        VALUES('$portal', '$datacri', '$datapub', '$titulo', '$keyword', '$hashtags', '{$imageProperties['mime']}', '{$imgData}', '$pedido', '$autor')";
if(mysqli_query($link, $sql)){
    echo '<script type="text/javascript"> alert("Portal Criado"); </script>';
    } else{
    echo "ERRO: Não foi possivel executar o comando $sql. " . mysqli_error($link);
    }
?>

我的html文件:

    <form action="php\pedidos\p_ins.php" enctype="multipart/form-data" method="post">
    <link rel="stylesheet" href="css\pedidos.css">
    <fieldset>
    <legend><span class="number">1</span> Criar Pedido</legend>
    <label for="portal">Portal</label
    <?php                
    $link = mysqli_connect("blah", "blah", "blah", "blah");
    if($link === false){
        die("ERRRO: Não foi possivel a conexão com a base de dados. " . mysqli_connect_error());}
        $result = $link->query("select po_id, po_nome from portais");
        echo "<html>";
        echo "<body>";
        echo "<select name='field1' name='po_id'>";
        echo "<option value=''>----Selecione um Portal----</option>";
        while ($row = $result->fetch_assoc()) {
            unset($id, $name);
            $id = $row['po_id'];
            $name = $row['po_nome'];
            echo '<option value="'.$id.'">'.$name.'</option>';
            }    echo "</select>";
            echo "</body>";
            echo "</html>";?>
            <label>Data de Criação</label>
            <input type="date" name="field2" placeholder="Data de publicacao do Post">
            <label>Data de Publicação</label>
            <input type="date" name="field3" placeholder="Data de publicacao do Post">
            <label>Titulo</label>
            <input type="text" name="field4" placeholder="Insira aqui o Titulo">
            <label>Keywords</label>
            <input type="text" name="field5" placeholder="Insira aqui as Keywords">
            <label>Hashtags</label>
            <input type="text" name="field6" placeholder="Insira aqui as Hashtags">
            <label>Imagem</label>
            <p> </p>
            <input type="file" name="userImage" accept="image/*" class="inputFile"> <p> </p>
            <label>Pedido</label>
            <textarea type="text" name="field7" placeholder="Insira aqui o Pedido"></textarea>
            <label for="autores">Autor</label>
            <?php
                $result = $link->query("SELECT *FROM autores");
                echo "<html>";
                echo "<body>";
                echo "<select name='field8' name='a_id'>";
                echo "<option value=''>----Selecione um autor----</option>";
                while ($row = $result->fetch_assoc()) {
                    unset($id, $name)
;                  $id = $row['a_id'];
                  $name = $row['a_nome']; 
                  echo '<option value="'.$id.'">'.$name.'</option>';
                  }    echo "</select>"; 
                  echo "</body>";   
                  echo "</html>";?> 
                  <input type="submit" value="Enviar" />    
                  <div id='footer'> 
                  </div>
                  </form>

感谢。

1 个答案:

答案 0 :(得分:1)

确保您的input type="file"位于具有enctype="multipart/form-data"的表单中,或者不会将文件发送到您的PHP脚本,$_FILES['userImage']['tmp_name']将为空

<form method="post" enctype="multipart/form-data" action="yourphpfile.php">
    <label>Data de Criação</label>
    <input type="date" name="field2" placeholder="Data de publicacao do Post">
    <label>Data de Publicação</label>
    <input type="date" name="field3" placeholder="Data de publicacao do Post">
    <label>Titulo</label>
    <input type="text" name="field4" placeholder="Insira aqui o Titulo">
    <label>Keywords</label>
    <input type="text" name="field5" placeholder="Insira aqui as Keywords">
    <label>Hashtags</label>
    <input type="text" name="field6" placeholder="Insira aqui as Hashtags">
    <label>Imagem</label>
    <p> </p>
    <input type="file" name="userImage" class="inputFile">  <p> </p>
    <label>Pedido</label>
    <textarea type="text" name="field7" placeholder="Insira aqui o Pedido"></textarea>
    <label for="autores">Autor</label>
</form>

至于你的PHP代码,我建议将有关插入的所有块放到if块内的数据库中。此外,您还有一些修复错误:

if(!empty($_FILES['userImage']['tmp_name']) 
     && file_exists($_FILES['userImage']['tmp_name'])) {
    $imgData= mysqli_real_escape_string($link, file_get_contents($_FILES['userImage']['tmp_name']));
    $imageProperties = getimageSize($_FILES['userImage']['tmp_name']);
    $portal = mysqli_real_escape_string($link, $_POST['field1']);
    $date = mysqli_real_escape_string($link, $_POST['field2']);
    $datacri = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
    $date = mysqli_real_escape_string($link, $_POST['field3']);
    $datapub = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
    $titulo = mysqli_real_escape_string($link, $_POST['field4']);
    $keyword = mysqli_real_escape_string($link, $_POST['field5']);
    $hashtags = mysqli_real_escape_string($link, $_POST['field6']);
    $pedido = mysqli_real_escape_string($link, $_POST['field7']);
    $autor = mysqli_real_escape_string($link, $_POST['field8']);
    if (!$portal) { 
        echo '<script type="text/javascript"> alert("Preencha todos os campos "); </script>';
        mysqli_close($link);
    } 

    $sql = "INSERT INTO pedidos (p_portal, p_datacri, p_datapub, p_titulo, p_keywords, p_hashtags, p_imageType, p_imageData, p_pedido, p_autor)
            VALUES('$portal', '$datacri', '$datapub', '$titulo', '$keyword', '$hashtags', '{$imageProperties['mime']}', '{$imgData}', '$pedido', '$autor')";
    if(mysqli_query($link, $sql)) {
        echo '<script type="text/javascript"> alert("Portal Criado"); </script>';
    } else{
        echo "ERRO: Não foi possivel executar o comando $sql. " . mysqli_error($link);
    }
} else {
    echo "ERROR: couldn't get image Data";
}

?>

...