gpt4 book ai didi

php - 使用准备好的语句上传图像文件位置

转载 作者:行者123 更新时间:2023-11-29 05:56:05 25 4
gpt4 key购买 nike

我在 mysql 中使用了 blob 数据类型,也在 bind_para 字母“b”中使用了 blob,我可以在文件夹中看到图像,但它无法保存在数据库中,所以这是下面的 bind_para 名称 $file,如果我替换 blob“b"在 bind_para 中使用字母 "s"它将保存 [BLOB - 20 B] 所以字母 "b"没有存储图像?

<form action="upload.php" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>

这里是upload.php

$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$file="uploads/".$_FILES["fileToUpload"]["name"];
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}

准备好的语句:

 $stmt = mysqli_stmt_init($connection);
$query = "INSERT INTO user (firstname, lastname, email, password, image, birthday, gender) VALUES (?, ?, ?, ?, ?, ?, ?)";

mysqli_stmt_prepare($stmt, $query);
mysqli_stmt_bind_param($stmt, "sssssss", $firstname, $lastname, $email, $password, $file, $birthday, $gender);
mysqli_stmt_execute($stmt);

最佳答案

您正在将文件移动到名为 uploads 的文件夹中。到目前为止,一切都很好。现在您需要将它的路径作为字符串存储在数据库中。 $file 是路径字符串,您将它发送到数据库 - 再次很好。

唯一的错误似乎是您试图将该路径字符串存储在 blob 列中。只需将其更改为 varchar 列即可。

您不需要将文件保存在数据库中,因为您已经保存在磁盘上的 uploads 文件夹中。您只需要存储它的路径,以便您以后可以再次访问它。

我的建议是忘记将文件的内容 存储在数据库中,这样效率不高。您(几乎)完成它的方式通常是更好的方法。


附言注意 Akintunde 的评论 - 您应该编写一些代码来检查上传的文件类型,并可能禁止可能包含恶意内容的脚本或 exe 文件。

关于php - 使用准备好的语句上传图像文件位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49234414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com