View difference between Paste ID: j3u9XBF5 and Y8SE7r2U
SHOW: | | - or go back to the newest paste.
1
1.0 feedback.tpl добавил:
2
3
<tr>
4
			<td class="label" valign="top">
5
				Файл:
6
			</td>
7
			<td><input type="file" maxlength="45" name="file" class="f_input" /></td>
8
		</tr>
9
10
2.0 в engine/ajax создал файл upload_screen.php с содержимым:
11
12
<?php
13
14
@error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE );
15
@ini_set ( 'display_errors', true );
16
@ini_set ( 'html_errors', false );
17
@ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE );
18
19
define( 'DATALIFEENGINE', true );
20
define( 'ROOT_DIR', substr( dirname(  __FILE__ ), 0, -12 ) );
21
define( 'ENGINE_DIR', ROOT_DIR . '/engine' );
22
23
include ENGINE_DIR . '/data/config.php';
24
25
$title = isset($_REQUEST['title']) ? $_REQUEST['title'] : 'none';
26
27
foreach( $_FILES as $file ) {
28
    $file_ext = @end(explode('.', $file['name']));
29
    
30
    if( in_array($file_ext, array('jpg', 'jpeg', 'gif', 'png')) ) {
31
        if( move_uploaded_file( $file['tmp_name'], ROOT_DIR . '/uploads/' . $file['name'] ) )
32
            $files[] = realpath( ROOT_DIR . '/uploads/' . $file['name'] );
33
        else
34
            $error = true;
35
    } else
36
        $error = true;
37
}
38
39
$data = $error ? array('error' => 'Ошибка загрузки файлов.') : array('files' => $files, 'title' => $title );
40
41
echo json_encode( $data );
42
43
?>
44
45
3.0 в JS подключил код:
46
47
var files;
48
49-
// Вешаем функцию на событие
49+
$(function(){
50-
// Получим данные файлов и добавим их в переменную
50+
	$('input[type=file]').change(function(){
51-
$('input[type=file]').change(function(){
51+
		files = this.files;
52-
    files = this.files;
52+
	});
53-
});
53+
54
	$('.button').click(function(event){
55-
$('.button').click(function( event ){
55+
		event.stopPropagation(); // Остановка происходящего
56-
    event.stopPropagation(); // Остановка происходящего
56+
		event.preventDefault();  // Полная остановка происходящего
57-
    event.preventDefault();  // Полная остановка происходящего
57+
58
		// Создадим данные формы и добавим в них данные файлов из files
59-
    // Создадим данные формы и добавим в них данные файлов из files
59+
		var data = new FormData();
60-
    var data = new FormData();
60+
		$.each( files, function(key, value){
61-
    $.each( files, function( key, value ){
61+
			data.append(key, value);
62-
        data.append( key, value );
62+
		});
63-
    });
63+
64
		// Отправляем запрос
65-
    // Отправляем запрос
65+
		$.ajax({
66-
    $.ajax({
66+
			url: dle_root+'/engine/ajax/upload_screen.php',
67-
        url: dle_root+'/engine/ajax/upload_screen.php',
67+
			type: 'POST',
68-
        type: 'POST',
68+
			data: data,
69-
        data: data,
69+
			cache: false,
70-
        cache: false,
70+
			dataType: 'json',
71-
        dataType: 'json',
71+
			processData: false, // Не обрабатываем файлы
72-
        processData: false, // Не обрабатываем файлы
72+
			contentType: false, // Так jQuery скажет серверу что это строковой запрос
73-
        contentType: false, // Так jQuery скажет серверу что это строковой запрос
73+
			success: function(respond, textStatus, jqXHR){
74-
        success: function( respond, textStatus, jqXHR ){
74+
				// Если все ОК
75
				if( typeof respond.error === 'undefined' ){
76-
            // Если все ОК
76+
					// Файлы успешно загружены, делаем что нибудь здесь 
77-
            if( typeof respond.error === 'undefined' )
77+
					var files_path = respond.files;
78-
            {
78+
					var html = '';
79-
                // Файлы успешно загружены, делаем что нибудь здесь 
79+
					$.each(files_path, function(key, val){
80-
                var files_path = respond.files;
80+
						html += val +'<br>';
81-
                var html = '';
81+
					});
82-
                $.each( files_path, function( key, val ){ html += val +'<br>'; } )
82+
					$('.ajax-respond').html(html);
83-
                $('.ajax-respond').html( html );
83+
				} else console.log('ОШИБКИ ОТВЕТА сервера: ' + respond.error);
84-
            }
84+
			},
85-
            else
85+
			error: function(jqXHR, textStatus, errorThrown){
86-
                console.log('ОШИБКИ ОТВЕТА сервера: ' + respond.error );
86+
				console.log('ОШИБКИ AJAX запроса: ' + textStatus );
87-
        },
87+
			}
88-
        error: function( jqXHR, textStatus, errorThrown ){
88+
		});
89-
            console.log('ОШИБКИ AJAX запроса: ' + textStatus );
89+
	});
90-
        }
90+
});