使用php创建一个上传字段并将url发送到数据库

时间:2016-01-07 13:13:06

标签: php mysql upload

我想创建一个表单来提交前端的图像文件并使用php将其发送到wordpress上传目录和数据库,但我的php说文件是图像但不上传它:

<div id="recibo">
<form action="" method="post" enctype="multipart/form-data">
<p>upload do recibo:
<input type="file" name="pictures[]" />
<input type="submit" value="Enviar" />
</p>
</form>
</div> 

PHP:

<?php
$target_dir = "wp-content/uploads/recibos";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
?> 

1 个答案:

答案 0 :(得分:2)

这里有一些问题。

首先,文件输入的名称属性为name="pictures[]",但您使用的是$_FILES["fileToUpload"],必须匹配。

重命名:name="fileToUpload[]"

旁注:使用括号表示要上传多个文件的数组;你不需要它,因为你的其余代码不支持多个文件上传。

将其更改为name="fileToUpload"

然后你的文件夹路径:

$target_dir = "wp-content/uploads/recibos";

recibos

后没有目录分隔符

这将转换为recibosFILE.JPG而不是recibos/FILE.JPG

将其更改为:

$target_dir = "wp-content/uploads/recibos/";

确保您上传的文件夹具有正确的写入权限。

另一件事:我无法看到if(isset($_POST["submit"])) {...}如何在这里工作,因为你的提交按钮没有与之匹配的name属性。

<input type="submit" value="Enviar" /><input name="submit" type="submit" value="Enviar" />

特别说明:

如果您确实要上传多个文件,那么您需要找到另一个脚本来执行此操作,这不是您的问题所在。

另见:

增加上传大小

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。