【发布时间】:2019-04-09 08:52:33
【问题描述】:
我正在尝试将图像添加到我的数据库中,其中包含 name 和 id 两列。但是,当我尝试下面的代码时,只插入了id,而不是image。请告诉我需要在哪里更正代码。
$(function() {
$('#insert').click(function() {
var file = $('#image').val();
$.ajax({
url: "addimg.php",
method: "post",
async: false,
data: {
"insert": 1,
file: file
},
success: function(data) {
$('#image').val('');
}
})
});
});
<input type="file" name="myfile" id="image">
<input type="submit" name="insert" id="insert">
<?php
$conn = mysqli_connect('*****', '****', '*****', '*****');
if (isset($_POST['insert']))
{
$file = addslashes(file_get_contents($_FILES["myfile"]["tmp_name"]));
$query = "INSERT INTO tbl_images(name) VALUES('$file')";
mysqli_query($conn, $query);
}
?>
【问题讨论】:
-
我在 ajax 中将参数
method更改为type:"post"? -
首先,在AJAX请求中发送二进制数据时,需要使用FormData对象,如this,并且需要将
contentType和processData设置为false。其次,由于image是二进制数据,您需要将其作为 BLOB 存储在 mySql 数据库中,或者将其转换为 base64 并将其保存为字符串。最后,永远不要在 AJAX 请求中使用async: false,这是非常糟糕的做法。 -
要么转换为base64,要么将文件保存到目录并添加数据库路径
-
你已经可以在网上找到很多这个过程的工作示例
-
避免在数据库中将图像存储为 blob,这可能会降低查询执行速度,请尝试将其存储在文件夹中
标签: jquery