gpt4 book ai didi

php - 如何使用 jquery、ajax 和 php 将图像文件 (BLOB) 保存在数据库中

转载 作者:行者123 更新时间:2023-12-01 08:35:52 25 4
gpt4 key购买 nike

我想使用 jquery、Ajax 和 PHP 将图像作为 BLOB 文件保存在数据库中。我可以上传它并在表单中显示它(如果它是手动插入到数据库中的)。但是,当我在表单上更改它时,新图像可以很好地显示,但是当我单击“保存”时,它不会保存在数据库中。我在这里没有找到任何使用 jquery、Ajax 和 PHP 并将整个图像存储在数据库中的解决方案。

这是我的 HTML 代码的一部分 (Content/users.php):

   <img src="images/defaultprofile.png" id="photoUserUpload"
name="image" onClick="triggerClick()" />
<input type="file"name="profileImage" id="profileImage" style="display:
none;" accept=".jpg, .png" onchange="displayImage(this)" />
</div>
<div>
<button id="saveTechItem" class="btn btn-primary saveTechItem">Save</button></div>

这是我的 js 代码的一部分(Data_Scripts/users.js):

$(document).on("click", ".saveItem", function() {
if (validateForm()) {
addOrUpdateItem();
}
});
function addOrUpdateItem(event) {
var itemId = $("#userId").val();
var fullName = $("#txtUserName").val();

var pic=$("#photoUserUpload").attr('src');
alert (pic);

//I tried also to append the file before submit
var file=new FormData();
file.append('file', file2);
//alert (file2);

var itemData = {
id: itemId,
postType: 'addOrUpdate',
fullName: fullName,
pic:pic
};

$.ajax({
url: 'data_ajax/users.php',
data: itemData,
type: "POST",
cache: false,
success: function(data) {
location.reload();
},
error: function(e) {
alert("error while trying to add or update user!");
}
});
}

这是我的 PHP 代码的一部分 (DataAjax/user.php):

if (isset($_POST['id'])) {
$postType = $_POST['postType'];
if ($postType == "addOrUpdate") {
$Id = $_POST['id'];
$FullName = $_POST['userName'];
$pic = base64_encode(file_get_contents($_POST['pic']));
$data = new Data();
$db = $data->dataHandler();
$query = "INSERT INTO Users (`id`, `fullname`, `image`)
values ('$Id', '$FullName', '$pic')";
$db->query($query);
}
}

最佳答案

要通过ajax上传文件,您必须使用formdata对象(其中包含文件/blob对象),将其作为数据参数传递给$.ajax并将processData和contentType设置为false。

function addOrUpdateItem(event) {
var itemId = $("#userId").val();
var fullName = $("#txtUserName").val();
var pic = $("#profileImage").prop('files')[0];

var data = new FormData();
data.append('id', itemId);
data.append('postType', addOrUpdate);
data.append('fullName', fullName);
data.append('pic', pic);

$.ajax({
url: 'data_ajax/users.php',
data: data,
type: "POST",
cache: false,
contentType: false,
dataType: false,
success: function(data) {
location.reload();
},
error: function(e) {
alert("error while trying to add or update user!");
}
});
}

您必须使用$_FILES['pic'][tmp_name]来访问该文件

if (isset($_POST['id'])) {
$postType = $_POST['postType'];
if ($postType == "addOrUpdate") {
$Id = $_POST['id'];
$FullName = $_POST['userName'];
$pic = base64_encode(file_get_contents($_FILES['pic'][tmp_name]));
$data = new Data();
$db = $data->dataHandler();
$query = "INSERT INTO Users (`id`, `fullname`, `image`)
values ('$Id', '$FullName', '$pic')";
$db->query($query);
}
}

关于php - 如何使用 jquery、ajax 和 php 将图像文件 (BLOB) 保存在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55862114/

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