php - 使用 move_uploaded_file 上传文件错误
问题描述
我对 move_uploaded_file 函数有疑问。问题是当我选择要上传的图像时,它不会移动到我设置的文件中。
<?php
include("db_connect.php");
$valid_extensions = array('jpeg', 'jpg', 'png', 'gif', 'bmp');
$path = 'images/';
if( $_FILES['image'])
{
$img = $_FILES['image']['name'];
$tmp = $_FILES['image']['tmp_name'];
$ext = strtolower(pathinfo($img, PATHINFO_EXTENSION));
$final_image = rand(1000,1000000).$img;
// echo $img.$tmp.$final_image;
if(in_array($ext, $valid_extensions))
{
$path = $path.strtolower($final_image);
if(move_uploaded_file($tmp,$path))
{
echo "<img src='$path' />";
$insert = $mysqli->query("CALL sp_uploadImage('".$path."')");
}
else
{
echo 'invalid';
echo '<pre>';
print_r($_FILES);
}
}
}
?>
解决方案
您应该为您的 if 语句运行适当的条件,并提供备用路线,以防它没有按计划进行。
<?php
include("db_connect.php");
$valid_extensions = array('jpeg', 'jpg', 'png', 'gif', 'bmp');
$path = 'images/';
if(isset($_FILES['image']['name']) && $_FILES['image']['name'] != ''){
// check if file name is set and not empty
$img = $_FILES['image']['name'];
$tmp = $_FILES['image']['tmp_name'];
$ext = strtolower(pathinfo($img, PATHINFO_EXTENSION));
$final_image = rand(1000,1000000).$img;
if(in_array($ext, $valid_extensions)){
$path .= strtolower($final_image);
if(move_uploaded_file($tmp,$path)){
echo "<img src='$path' />";
$insert = $mysqli->query("CALL sp_uploadImage('".$path."')");
}else {
echo 'Failed to move Files';
}
}else{
echo 'Not a Valid Extension';
}
}else{
echo 'No Files Found';
}
?>
这样,它将返回适当的消息并让您知道出了什么问题。
推荐阅读
- oracle - 更新新表中的 oracle xmltype 字段值
- mysql - SQL - 多个表的 INNER JOIN 引发语法错误
- security - 无法一次扫描站点地图的所有 URL
- docker - 将 docker 容器中的 QGIS 项目与另一个 docker 容器中的 Postgres+Postgis 连接起来
- javascript - 如果元素在视口中,打字稿检查正在进行
- python - Django / Ubuntu 20 - 如何更改为先前版本的 GDAL
- java - 我想问为什么我不能在框架中打印图像
- reactjs - 获取 babel 自动运行
- javascript - AudioBufferSourceNode.start() 不起作用,或者至少激活但不产生任何声音,我做错了什么吗?
- python - 将多个传感器值发送到 python 服务器