使用php制作一个上传字段,并将url发送到数据库


make a upload field using php and send the url to database

我想创建一个表单,在前端提交一个图像文件,并使用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;
    }
}
?> 

这里有一些错误。

首先,文件输入的名称属性是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" />

特别注意:

如果你确实想上传多个文件,那么你需要为自己找到另一个脚本来完成,而这不是你的问题所在。

另请参阅:

  • PHP更改上传文件的最大大小

增加上传大小

错误报告添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code

旁注:显示错误只能在暂存中进行,而不能在生产中进行。