我想创建一个表单来提交前端的图像文件并使用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;
}
}
?>
答案 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
旁注:只应在暂存时进行显示错误,而不是生产。