Advertisement
vitnet

upload

Nov 29th, 2015
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. $(function(){
  50.     $('input[type=file]').change(function(){
  51.         files = this.files;
  52.     });
  53.  
  54.     $('.button').click(function(event){
  55.         event.stopPropagation(); // Остановка происходящего
  56.         event.preventDefault();  // Полная остановка происходящего
  57.  
  58.         // Создадим данные формы и добавим в них данные файлов из files
  59.         var data = new FormData();
  60.         $.each( files, function(key, value){
  61.             data.append(key, value);
  62.         });
  63.    
  64.         // Отправляем запрос
  65.         $.ajax({
  66.             url: dle_root+'/engine/ajax/upload_screen.php',
  67.             type: 'POST',
  68.             data: data,
  69.             cache: false,
  70.             dataType: 'json',
  71.             processData: false, // Не обрабатываем файлы
  72.             contentType: false, // Так jQuery скажет серверу что это строковой запрос
  73.             success: function(respond, textStatus, jqXHR){
  74.                 // Если все ОК
  75.                 if( typeof respond.error === 'undefined' ){
  76.                     // Файлы успешно загружены, делаем что нибудь здесь
  77.                     var files_path = respond.files;
  78.                     var html = '';
  79.                     $.each(files_path, function(key, val){
  80.                         html += val +'<br>';
  81.                     });
  82.                     $('.ajax-respond').html(html);
  83.                 } else console.log('ОШИБКИ ОТВЕТА сервера: ' + respond.error);
  84.             },
  85.             error: function(jqXHR, textStatus, errorThrown){
  86.                 console.log('ОШИБКИ AJAX запроса: ' + textStatus );
  87.             }
  88.         });
  89.     });
  90. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement