使用 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"])) {...} 在这里如何工作,因为您的提交按钮没有与其匹配的名称属性。

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

特别说明:

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

另请参阅:

  • PHP change the maximum upload file size

增加上传大小

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

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

// rest of your code

旁注:显示错误只应在暂存阶段进行,绝不能在生产阶段进行。