图片上传脚本无法正常工作
Image upload script not working correctly
您好,我需要一些帮助来将图片上传到我的网站,我已经对这个脚本进行了几次更改,但我就是无法使其正常运行?
当我尝试上传任何图片时,脚本似乎失败了,没有更新任何记录,也没有上传任何图片?我对脚本做错了什么吗?
if(isset($_POST['uploadimage'])){
$user = $_POST['user'];
$target_dir = "userimg/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
$check = getimagesize($_FILES["fileToUpload"]);
if($check !== false) {
$uploadOk = 1;
} else {
$imgerror = 1;
$uploadOk = 0;
}
// Check if file already exists
if (file_exists($target_file)) {
$imgerror = 2;
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"] > 500000) {
$imgerror = 3;
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
$imgerror = 4;
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
$filenameimg = basename( $_FILES["fileToUpload"]);
mysqli_query($conn, "UPDATE friends_list SET display_img = '$filenameimg' WHERE id = '$user'");
$imgerror = 6;
} else {
$imgerror = 5;
}
}
}
您似乎在这里遗漏了一些重要的部分,导致问题的第一部分是您的 basename
函数,您没有包括文件名。
$target_file = $target_dir . basename($_FILES["fileToUpload"]);
应该是
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
而要获取图片大小,也需要使用相同的过程:
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
也可以使用这个想法来更改您的 'Check File Size' 部分,我不会为您完成您的工作,但我会引导您朝着正确的方向前进。
您还需要记住添加tmp_name
以移动上传的文件。
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
纠正这些错误后,图像应该可以正确处理。除非你得到任何其他错误?
您好,我需要一些帮助来将图片上传到我的网站,我已经对这个脚本进行了几次更改,但我就是无法使其正常运行?
当我尝试上传任何图片时,脚本似乎失败了,没有更新任何记录,也没有上传任何图片?我对脚本做错了什么吗?
if(isset($_POST['uploadimage'])){
$user = $_POST['user'];
$target_dir = "userimg/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
$check = getimagesize($_FILES["fileToUpload"]);
if($check !== false) {
$uploadOk = 1;
} else {
$imgerror = 1;
$uploadOk = 0;
}
// Check if file already exists
if (file_exists($target_file)) {
$imgerror = 2;
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"] > 500000) {
$imgerror = 3;
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
$imgerror = 4;
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
$filenameimg = basename( $_FILES["fileToUpload"]);
mysqli_query($conn, "UPDATE friends_list SET display_img = '$filenameimg' WHERE id = '$user'");
$imgerror = 6;
} else {
$imgerror = 5;
}
}
}
您似乎在这里遗漏了一些重要的部分,导致问题的第一部分是您的 basename
函数,您没有包括文件名。
$target_file = $target_dir . basename($_FILES["fileToUpload"]);
应该是
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
而要获取图片大小,也需要使用相同的过程:
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
也可以使用这个想法来更改您的 'Check File Size' 部分,我不会为您完成您的工作,但我会引导您朝着正确的方向前进。
您还需要记住添加tmp_name
以移动上传的文件。
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
纠正这些错误后,图像应该可以正确处理。除非你得到任何其他错误?