@Demixovsky

Как загрузить изображения в БД в Modal Bootstrap 3.2 с помощью AJAX?

День добрый! Интересует вопрос загрузки изображений на сервер к файлу-обработчику (metall_add_position.php) из модального окна Бутстрап. Обычные текстовые данные загружаются на сервер отлично, но вот даже если написать в обработчике функцию обработки изображения и записи в БД его URL, в БД все равно ничего не заносится. С AJAX работаю относительно недавно, потому обращаюсь к вам. Надо ли указывать в запросе какие-либо дополнительные параметры из-за загрузки изображения?
Ниже привожу коды отдельно взятых участков.

AJAX:
//Добавление строки
 $(function() {
	$("button#submit").click(function(){
		   	$.ajax({
    		   	type: "POST",
			url: "inc/metall_add_position.php",
			data: $('form.form-horizontal').serialize(),
        		success: function(msg){
 	          		  $("#add_position_btn").html(msg);
 		        	$("#add_position").modal('hide');
					$.ajax({  
                    url: "inc/table_metall.php",  
                    cache: false,  
                    success: function(html){  
                        $("#table_show").html(html);  
                    }  
                });	
 		        },
			error: function(){
				alert("Ошибка при добавлении записи");
				}
      			});
				
	});
});


В этом же файле находится форма отправки. Всю указывать не стал, но тип у нее - POST, enctype="multipart/form-data", а сюда скинул лишь группу со строкой выбора изображения.
<div class="form-group">
    <div class="col-sm-4">
	<label for="imgup">Изображение</label>
    </div>
    <div class="col-sm-8">
	<input type="file" id="imgup" class="form-control" name="fupload">
</div>
</div>
</div>


А вот код обработчика:
if (isset($_SESSION['auth'])){
include '../../inc/conf.php';
if (isset($_POST['type']) and (isset($_POST['name'])) and (isset($_POST['size'])) and (isset($_POST['price'])) and (isset($_POST['opt'])) and(isset($_POST['sam']))){
$type = strip_tags($_POST['type']);
$name = strip_tags($_POST['name']);
$size = strip_tags($_POST['size']);
$price = strip_tags($_POST['price']);
$opt = strip_tags($_POST['opt']);
$sam = strip_tags($_POST['sam']);
if (empty($_FILES['fupload']['name']))
{
$avatar = "img/noimg.png"; 
}
else 
{
$path_to_90_directory = 'http://oztsk.ru/img/';	
if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))
	 {	 	 	
		$filename = $_FILES['fupload']['name'];
		$source = $_FILES['fupload']['tmp_name'];	
		$target = $path_to_90_directory . $filename;
		move_uploaded_file($source, $target);
	if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
	$im = imagecreatefromgif($path_to_90_directory.$filename) ; 
	}
	if(preg_match('/[.](PNG)|(png)$/', $filename)) {
	$im = imagecreatefrompng($path_to_90_directory.$filename) ;
	}
	if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
		$im = imagecreatefromjpeg($path_to_90_directory.$filename);
	} 
$w = 90;  
$w_src = imagesx($im); 
$h_src = imagesy($im); 
         $dest = imagecreatetruecolor($w,$w); 
         if ($w_src>$h_src) 
         imagecopyresampled($dest, $im, 0, 0,
                          round((max($w_src,$h_src)-min($w_src,$h_src))/2),
                          0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));  
         if ($w_src<$h_src) 
         imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
         min($w_src,$h_src), min($w_src,$h_src));  
         if ($w_src==$h_src) 
         imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src); 
         $date=time(); 
imagejpeg($dest, $path_to_90_directory.$date.".jpg");
$avatar = $path_to_90_directory.$date.".jpg";
$delfull = $path_to_90_directory.$filename; 
unlink ($delfull);
}
else 
         {   
exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>"); 
	     }
}

$sql = "INSERT INTO metall (type, name, size, price, opt, sam, pic) VALUES ('{$type}', '{$name}', '{$size}', '{$price}', '{$opt}', '{$sam}', '{$avatar}')";
$retval = mysql_query($sql);
if(! $retval )
{
  die('<div class=\"alert alert-danger alert-dismissible\" role=\"alert\"><button type=\"button\" class=\"close\" data-dismiss=\"alert\"><span aria-hidden=\"true\">&times;</span><span class=\"sr-only\">'. mysql_error());'</span></button> Ошибка при добавлении данных</span></div>';
}
echo "<div class=\"alert alert-success alert-dismissible\" role=\"alert\"><button type=\"button\" class=\"close\" data-dismiss=\"alert\"><span aria-hidden=\"true\">&times;</span><span class=\"sr-only\">Закрыть</span></button><span class=\"glyphicon glyphicon-ok\"></span> Данные успешно внесены в базу</span></div>";
}
?>
<div id="add_position_btn">
<a data-toggle="modal" href="#add_position" class="btn btn-primary"><span class="glyphicon glyphicon-plus"></span> Добавить позицию</a>
</div>
<? } ?>
  • Вопрос задан
  • 3024 просмотра
Пригласить эксперта
Ответы на вопрос 1
frost18
@frost18
Программист PHP
Я отправляю формы ajax'ом с помощью плагина jQuery Form, он и файлы отправляет тоже. А на стороне сервера обрабатывайте как обычно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы