php - 无法更改上传文件的文件夹位置
问题描述
我想将当前位于 php/images/ 中的 $target 目录更改为 uploads/images/,但由于某种原因它无法正常工作,并且没有图像上传到该文件夹,但仅限于 php/images 和我不知道这是什么原因造成的。
我上传的所有图像都上传到 phpmyadmin 并加载到我的 images.php 页面中,所以所有这些都在工作,只是关于 $target 的东西不起作用。
<?php
$db = mysqli_connect("localhost", "root", "", "media");
$msg = "";
if (isset($_POST['upload'])) {
$image = $_FILES['image']['name'];
$target = "php/images/".basename($image);
$sql = "INSERT INTO images (image_name) "
. "VALUES ('$image')";
mysqli_query($db, $sql);
if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) {
$msg = "Image uploaded successfully";
}else{
$msg = "Failed to upload image";
}
}
?>
<form id='imageForm' method="POST" action="" enctype="multipart/form-data">
<input type="hidden" name="size" value="1000000">
<div>
<input class="file-upload" type="file" name='image' accept='image/*' />
</div>
<div class="upload-button">
<button class="" name='upload'>UPLOAD</button>
</div>
</form>
图像.php
$db = mysqli_connect("localhost", "root", "", "media");
$uploaded = mysqli_query($db, "SELECT * FROM images");
while ($row = mysqli_fetch_array($uploaded)) {
echo "<ul class='img_container'>";
echo "<li><img class='img_box' src='php/images/".$row['image_name']."' ></li>";
echo "</ul>";
}
解决方案
您在 mysql 数据库中插入 blob,您可以使用 blobs(base64) 但如果您加载太多图像会减慢您的网站速度,请看这里
if (isset($_POST['upload'])) {
if($_FILES['image']['error'] > 0) { echo 'Error during upload, try again'; }
//We won't use $_FILES['file']['type'] to check the file extension for security purpose
//Set up valid image extensions
$extsAllowed = array( 'jpg', 'jpeg', 'png' );
//Extract extention from uploaded file
//substr return ".jpg"
//Strrchr return "jpg"
$extUpload = strtolower( substr( strrchr($_FILES['image']['name'], '.') ,1) ) ;
//Check if the uploaded file extension is allowed
if (in_array($extUpload, $extsAllowed) ) {
//Upload the file on the server
$name = "{$_FILES['image']['name']}";
$imgName = rand(5, 99999);
$image = 'php/images/'.$imgName.'.jpg';
$result = move_uploaded_file($_FILES['image']['tmp_name'], $image);
}
if(result){
$sql = "INSERT INTO images (image_name) "
. "VALUES ('$image')";
mysqli_query($db, $sql);
$msg = "Image uploaded successfully";
}else{
$msg = "Failed to upload image";
}
}
还要检查您是否有权在该目录上写入。
推荐阅读
- haskell - 两条线和两个平面的交点
- ruby-on-rails - 从 rails 应用程序提供编译的 javascript 和 css 文件以在外部站点中使用
- android - 执行flutter clean时flutter无法删除build文件夹
- sql-server - 尝试在 Windows 上将 Linux 与 SQL Server 连接的连接问题
- haskell - 是 Haskell 的美元 $ 运算符,和 F# 的向后管道 <| 同样的想法?
- c# - 不同会话变量的不同会话超时?
- ebean - 使用 eBean ORM 时的 tornadofx 数据绑定
- flutter - Flutter 重置 AlertDialog 的状态
- spring - Bootstrap 没有加载 Thymeleaf
- mysql - 超过锁定等待超时;尝试重新启动事务 - While 语句