首页 > 解决方案 > 如何使用 url 将 png 文件上传到数据库?

问题描述

各位程序员,我是网络编程新手,我有一个任务,我需要使用 url 将 png 文件上传到 sql 数据库。

$connection = mysqli_connect ($db_host,$db_user,$db_pass);

mysqli_select_db($connection,$db_name);

$sql1 = "INSERT INTO figures (Id, Name, Image) VALUES ('".$_GET['id']."', '".$_GET['Name']."', '".$_GET['Image']."')";
mysqli_query($connection,$sql1);

那些用于发送数据的行,这样我可以将 VARCHAR 上传到数据库,但是我不能上传 png ,我不知道如何在这里定义文件路径。(也许如果你知道我的任务更简单的解决方案,你能分享一下吗?)提前谢谢!!

标签: databasefileurl

解决方案


首先,您需要将发送表单设置为 multipart 并将方法更改为POST

<form method="POST" action="uploader.php" enctype="multipart/form-data">
 <input type="file" name="myfile">
 <input type="text" name="id">
 <input type="submit" value="Upload">
</form>

在 PHP 页面中,您可以使用 $_FILES 获取文件数据:

// I dont know what is id here? shouldn't be the auto Primary key?
$id=$_POST['id']; 
//Get name of file
$imageName=$_FILES["myfile"]["name"]; 
//Get the binary data of the image 
$imageData= addslashes(file_get_contents($_FILES['myfile']['temp_name']));

$connection = mysqli_connect ($db_host,$db_user,$db_pass);
mysqli_select_db($connection,$db_name);
$sql1 = "INSERT INTO figures (Id, Name, ImageData) VALUES ('$id', '$imageName', '$imageData')";
mysqli_query($connection,$sql1);

请注意,列 imageData 的类型应该是BLOB

正如您所提到的,您是编程新手,我不得不说您也可以选择将文件直接上传到服务器,并且只将 url 保存在数据库中。


推荐阅读