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 | + | }); |