我正在编写查询以仅接受 svg、png、jpeg 格式的图像字段。但如果图像字段为空,则在上传时显示为错误,实际上它应该插入其余字段,如名称和所有字段,如果我不是还添加图像。这是我的查询。
例子.php
$title=$_POST['blog_title'];
$result = str_replace(" ", "-", $title);
$description=$_POST['blog_description'];
if(is_uploaded_file($_FILES['image']['tmp_name'])){
$name=$_FILES["image"]["name"];
$type=$_FILES["image"]["type"];
$size=$_FILES["image"]["size"];
$temp=$_FILES["image"]["tmp_name"];
$error=$_FILES["image"]["error"];
$ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));
if($error > 0){
die("error while uploading");
}else{
$permissible_extension = array("png", "jpg", "jpeg", "svg", "jpg","jpe");
if(in_array($ext, $permissible_extension)){
if(move_uploaded_file($temp,"upload/".$name)){
$sql = mysql_query("INSERT INTO blogs(image,blog_title,blog_description)values('$name','$result','$description')");
if($sql){
header("Location:blogimage.php");
exit();
}else{
echo "Insertion failed";
}
}else{
echo "File couldn't be uploaded";
}
}else{
echo "Invalid format";
}
}
}else{
$sql = mysql_query("INSERT INTO blogs(blog_title,blog_description)values('$result','$description')");
if($sql){
header("Location:blogimage.php");
exit();
}else{
echo "Insertion failed";
}
}
最佳答案
首先,反对使用mysql_*
函数的强制性建议。这已被弃用,使用 mysqli_*
functions或 PDO相反。
现在,你的问题。如果你想在文件类型为空或错误的情况下存储有关文件的其他信息,则需要在测试前执行 INSERT。
下面是一些你可以尝试的代码:
<?php
//connect to the database using mysqli
$name=$_FILES["image"]["name"];
$type=$_FILES["image"]["type"];
$size=$_FILES["image"]["size"];
$temp=$_FILES["image"]["tmp_name"];
$error=$_FILES["image"]["error"];
if($error>0)
die("error while uploading");
else
{
//Insert the informations in your database here, so even without the upload, the info about the file will be stored
$query = mysqli_query("INSERT INTO blogs(image)values('$name')");
if($type == "image/png" || $type == "image/jpg"|| $type == "image/jpeg" || $type == "image/svg" || $type == "image/jpe" || $type==" ")
{
move_uploaded_file($temp,"upload/".$name);
echo "upload complete";
}
else
{
die("Format not allowed or file size too big!");
}
}
关于php - 如果使用 php 图像字段为空,则应接受数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35244794/