<?
/*$uploaddir = getcwd().DIRECTORY_SEPARATOR.'upload'.DIRECTORY_SEPARATOR;
print_r($uploaddir);
$uploadfile = $uploaddir.basename($_FILES['file']['name']);
move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile);
*/
$arr_file_types = ['image/png', 'image/gif', 'image/jpg', 'image/jpeg'];
if(!(in_array($_FILES['file']['type'], $arr_file_types))) {
echo 'false';
return;
}
if(!file_exists('uploads')) {
mkdir('uploads', 0777);
}
$uploadfile = time() . '_' . $_FILES['file']['name'];
$uploadfile = $uploaddir.basename($_FILES['file']['name']);
move_upload_file($_FILES['file']['tmp_name'], $uploadfile);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML5 Drag and Drop загрузка файлов</title>
<link rel="stylesheet" href="/style.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script src="/script.js"></script>
</head>
<body>
<form action="/upload.php">
<div id="dropZone">
Для загрузки, перетащите файл сюда.
</div>
</form>
</body>
</html>
$(document).ready(function() {
var dropZone = $('#dropZone'),
maxFileSize = 1000000; // максимальный размер фалйа - 1 мб.
// Проверка поддержки браузером
if (typeof(window.FileReader) == 'undefined') {
dropZone.text('Не поддерживается браузером!');
dropZone.addClass('error');
}
// Добавляем класс hover при наведении
dropZone[0].ondragover = function() {
dropZone.addClass('hover');
return false;
};
// Убираем класс hover
dropZone[0].ondragleave = function() {
dropZone.removeClass('hover');
return false;
};
// Обрабатываем событие Drop
dropZone[0].ondrop = function(event) {
event.preventDefault();
dropZone.removeClass('hover');
dropZone.addClass('drop');
var file = event.dataTransfer.files[0];
// Проверяем размер файла
if (file.size > maxFileSize) {
dropZone.text('Файл слишком большой!');
dropZone.addClass('error');
return false;
}
// Создаем запрос
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener('progress', uploadProgress, false);
xhr.onreadystatechange = stateChange;
xhr.open('POST', '/upload.php');
xhr.setRequestHeader('X-FILE-NAME', file.name);
xhr.send(file);
};
// Показываем процент загрузки
function uploadProgress(event) {
var percent = parseInt(event.loaded / event.total * 100);
dropZone.text('Загрузка: ' + percent + '%');
}
// Пост обрабочик
function stateChange(event) {
if (event.target.readyState == 4) {
if (event.target.status == 200) {
dropZone.text('Загрузка успешно завершена!');
} else {
dropZone.text('Произошла ошибка!');
dropZone.addClass('error');
}
}
}
});
по XHR вижу, что все ок, но файл так и не появляется в каталоге :(