使用 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
旁注:显示错误只应在暂存阶段进行,绝不能在生产阶段进行。
我想创建一个表单来在前端提交一个图像文件,然后使用 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
旁注:显示错误只应在暂存阶段进行,绝不能在生产阶段进行。