Сохранение файлов в виде блобов в базе данных ajax php pdo
$fileCount = count($_FILES);
for ($i = 0; $i < $fileCount; $i++) {
$fp = fopen($_FILES["file_".$i]['tmp_name'], 'rb');
$stmt4 = $dbh - > prepare("INSERT INTO files_tbl (pin,remarks,fileblob,file_type,nameoffile,filesize) VALUES (?,?,?,?,?,?)");
$stmt4 - > bindValue(1, $pin, PDO::PARAM_STR);
$stmt4 - > bindValue(2, $remarks, PDO::PARAM_STR);
$stmt4 - > bindParam(3, $fp, PDO::PARAM_LOB);
$stmt4 - > bindParam(4, $_FILES["file_".$i]['type'], PDO::PARAM_STR);
$stmt4 - > bindValue(5, $_FILES["file_".$i]['name'], PDO::PARAM_STR);
$stmt4 - > bindValue(6, $_FILES["file_".$i]['size'], PDO::PARAM_STR);
$stmt4 - > execute();
}
Вот как я вставляю файл как blob в php. Сохраняет файл, но не правильно. Когда я говорю, что сбережения не выполняются должным образом, я имею в виду, что по пути что-то не так. Когда я сравниваю сохранение файла с помощью моего проекта и добавление файла вручную в XAMPP, есть разница в fileblob, например, я сохраняю файл вручную в xampp, fileblob[BLOB - 488.9 KiB]
когда я использую проект становится[BLOB - 479.2 KiB]
, Я думаю, что по этой причине, когда я пытаюсь показать файл из базы данных, он показывает пустую страницу (когда файл, который я показываю, это файл, который я вставляю с помощью проекта), но если файл, который я пытаюсь показать, это файл, который я вставляю вручную в xampp это показывает файл.
Что может быть не так в моей вставке? Почему я не сохраняю правильный блоб
UPDATE
<input type="file" id="filecontent" name="filecontent" multiple="">
Аякса
var file = $('#filecontent')[0].files;
for (var i = 0; i < file.length; i++) {
formData.append("file_" + i, file[i]);
//more data are passed to formData
//formData.append("file", file[i]);
console.log(file[i]);
}
$.ajax({
url: '../include/AddNew.php',
type: 'POST',
dataType: "json",
data: formData,
processData: false, // tell jQuery not to process the data
contentType: false, // tell jQuery not to set contentType
success: function(data) {
console.log(data);
alert(data.message);
//window.location.reload(true);
},
error: function(data) {
//alert("Error!"); // Optional
}
});
UPDATE
когда я пытался поставитьprint_r($_FILES);
до линииfor ($i = 0; $i < $fileCount; $i++) {
выход
Array
(
[file_0] => Array
(
[name] => whomovedmycheese - Copy.pdf
[type] => application/pdf
[tmp_name] => C:\Users\HogRider\xampp\tmp\phpE775.tmp
[error] => 0
[size] => 500624
)
[file_1] => Array
(
[name] => whomovedmycheese.pdf
[type] => application/pdf
[tmp_name] => C:\Users\HogRider\xampp\tmp\phpE786.tmp
[error] => 0
[size] => 500624
)
)
UPDATE