Я работаю над функцией загрузки галереи с
Весьфункция gallery содержит 3 части:
Форма как view_create-char.php
<form id='gallery_upload' method='post' enctype='multipart/form-data'>
<input type='file' name='file' id='file'>
<input type='hidden' name='name' value='".$_GET['c']."' id='owner'>
<input type='button' class='create_submit' value='Upload'
id='add_image_gallery'>
</form>";
Ajax Script as main.js
$(document).ready(function(){
$("#add_image_gallery").click(function(){
var fd = new FormData();
var files = $('#file')[0].files[0];
var name = $('#owner').attr("value");
fd.append('file',files);
fd.append('name',name);
$.ajax({
url: 'includes/gallery_upload.php',
type: 'post',
data: fd,
contentType: false,
processData: false,
success: function(response){
if(response != 0){
alert('file uploaded');
}else{
alert('file not uploaded');
}
},
});
});
});
PHP-скрипт as gallery_upload.php
<?php
include 'dbh.inc.php';
$owner = $_POST['name'];
$file = $_FILES['file'];
$fileName = $_FILES['file']['name'];
$fileTmpName = $_FILES['file']['tmp_name'];
$fileSize = $_FILES['file']['size'];
$fileError = $_FILES['file']['error'];
$fileType = $_FILES['file']['type'];
$fileExt = explode('.', $fileName);
$fileActualExt = strtolower(end($fileExt));
$allowed = array('jpg', 'jpeg', 'png', 'gif');
$fileNameNew = uniqid('', true).'.'.$fileActualExt;
$fileDestination = 'uploads/'.$fileNameNew;
move_uploaded_file($fileTmpName, $fileDestination);
$sql = "INSERT INTO
characters_gallery (owner, image) VALUES ('$owner',
'$fileNameNew');";
$result = mysqli_query($conn, $sql);
Цель состоит в том, чтобызагрузите изображение с помощью Ajax и вставьте два значения в файл characters_gallery-table.Сначала владелец таблицы, затем имя фактического изображения, созданного сценарием PHP. Это работает.
Но фактический файл не перемещается в указанную папку / загружается с помощью move_uploaded_file () .Он остается пустым, хотя таблица в моей базе данных заполнена двумя значениями $ owner и $ fileNamenew .Меня смущает то, что до того, как я использовал этот Ajax-скрипт, этот PHP-скрипт для перемещения файлов в папку загрузки работал нормально.Это не работает со сценарием, хотя.
Я благодарен за любую помощь
Редактировать --- Реакция на предупреждение, касающееся инъекций SQL:
Я не уверен, что я 'Я использую это редактирование, как я должен, но это дополнительная информация.Если я не прав, пожалуйста, удалите мою правку.
Я пытался добавить подготовленные операторы и задавался вопросом, исключил ли я какой-либо больший риск SQL-инъекций:
<?php
include_once 'characterfunctions.inc.php';
include 'dbh.inc.php';
$owner = mysqli_real_escape_string($conn, $_POST['name']);
$file = mysqli_real_escape_string($conn, $_FILES['file']);
$fileName = $_FILES['file']['name'];
$fileTmpName = $_FILES['file']['tmp_name'];
$fileSize = $_FILES['file']['size'];
$fileError = $_FILES['file']['error'];
$fileType = $_FILES['file']['type'];
$fileExt = explode('.', $fileName);
$fileActualExt = strtolower(end($fileExt));
$allowed = array('jpg', 'jpeg', 'png', 'gif');
$fileNameNew = uniqid('', true).'.'.$fileActualExt;
$fileDestination = '../uploads/'.$fileNameNew;
move_uploaded_file($fileTmpName, $fileDestination);
$sql = "INSERT INTO characters_gallery (owner, image) VALUES (?, ?);";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
echo "SQL Error";
} else {
mysqli_stmt_bind_param($stmt, "ss", $owner, $fileNameNew);
mysqli_stmt_execute($stmt);
}
$result = mysqli_query($conn, $sql);