Доброй ночи, сделал ajax обработку файлов для отправки.
Файлы отправляются - приходит подтверждение от ajax`a
Но вот код отправки:
$('#postnews').click(function(event) {
event.preventDefault();
var url = '...';
var data = $('form#news__form').serialize();
var file_data = $('#newsimg').prop('files');
var form_data = new FormData();
form_data.append('file', file_data);
$.ajax({
url: url,
type: 'POST',
dataType: 'text',
data: {data: data, formData: form_data},
cache:false, // В запросах POST отключено по умолчанию, но перестрахуемся
contentType: false, // Тип кодирования данных мы задали в форме, это отключим
processData: false, // Отключаем, так как передаем файл
})
.done(function() {
$('.successful').slideDown();
setTimeout(function(){
$('.successful').slideUp();
}, 2500)
$('#news__form')[0].reset();
})
.fail(function() {
$('.nsuccessful').slideDown();
setTimeout(function(){
$('.nsuccessful').slideUp();
}, 2500)
});
setTimeout(function(){
location.reload();
}, 2650)
});
Обработку php сделал быструю, ибо файлы будет загружать админ:
if(isset($_FILES)) {
//Переданный массив сохраняем в переменной
$image = $_FILES['image'];
// Проверяем размер файла и если он превышает заданный размер
// завершаем выполнение скрипта и выводим ошибку
if ($image['size'] > 200000) {
die('error');
}
// Достаем формат изображения
$imageFormat = explode('.', $image['name']);
$imageFormat = $imageFormat[1];
// Генерируем новое имя для изображения. Можно сохранить и со старым
// но это не рекомендуется делать
$imageFullName = '/newsprev/' . hash('crc32',time()) . '.' . $imageFormat;
// Сохраняем тип изображения в переменную
$imageType = $image['type'];
// Сверяем доступные форматы изображений, если изображение соответствует,
// копируем изображение в папку images
if ($imageType == 'image/jpeg' || $imageType == 'image/png') {
if (move_uploaded_file($image['tmp_name'],$imageFullName)) {
echo 'success';
} else {
echo 'error';
}
}
}
Но почему то файл в директории "/newsprev/" не создаётся, права дал на запись и чтение - 766
В форме тоже не мог допустить ошибку:
<form method="POST" class="s1_news__form" id="news__form" ENCTYPE="multipart/form-data">
<label for="newstitle">
<span class="news__title">Заголовок новости</span>
<input type="text" name="newstitle" id="newstitle">
</label>
<label for="news">
<span class="news__title">Содержание новости</span>
<textarea name="news" id="news" cols="30" rows="10"></textarea>
</label>
<label for="newsimg">
<span class="news__title">Добавить фото</span>
<input type="file" name="newsimg" id="newsimg">
</label>
<label for="postnews">
<input type="submit" name="postnews" id="postnews" placeholder="Опубликовать">
</label>
</form>