За последние 24 часа нас посетили 17525 программистов и 1721 робот. Сейчас ищут 1892 программиста ...

загрузка файлов ajax

Тема в разделе "PHP для новичков", создана пользователем askanim, 8 авг 2016.

  1. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    некая форма
    HTML:
    1. <form id="image">
    2.     <div class="modal-body">
    3.     {% for file in str.base  %}
    4.     {% if file.type_string == 5 %}
    5.     <p>{{ file.info_string }}</p>
    6.         <div class="col-md-12">
    7.             <div class="section">
    8.                 <label class="field prepend-icon append-button file"><span class="button btn-primary">Выбрать файл</span>
    9.                     <input id="{{ file.id_string }}" type="file" name="file_up" onchange="document.getElementById('{{ file.name_string }}').value = this.value;" class="gui-file">
    10.                     <input id="{{ file.name_string }}" type="text" name="{{ file.name_string }}" placeholder="Выбрать файл" class="gui-input">
    11.                     <label class="field-icon"><i class="fa fa-upload"></i></label>
    12.                 </label>
    13.             </div>
    14.         </div>
    15.     {% endif %}
    16.     {% endfor %}
    17.     <hr>
    18.     </div>
    19.     <div class="modal-footer koks">
    20.         <button type="button" class="btn btn-default" data-dismiss="modal">Закрыть</button>
    21.         <button type="button" class="btn btn-primary" id="ModalExe" data-id-module="{{ str.module_id }}" data-file="{{ str.module_file }}" data-name="{{ str.module_name }}" data-id="{{ str.id }}">Загрузить</button>
    22.     </div>
    23. </form>
    Код (Javascript):
    1. $('#ModalExe' ).on("click.koks",function(  ) {
    2.  
    3.             $('#image:input ').each(function()
    4.             {
    5.                 alert($(this).attr('name'));
    6.             });
    7.  
    8.             var obj = $('#image').serialize();
    9.             var nameModal = $('#ModalExe').attr('data-name');
    10.             var fileModal = $('#ModalExe').attr('data-file');
    11.             var idModule = $('#ModalExe').attr('data-id-module');
    12.            router(root+'admin/modules/ajax/addmodal', {"base":obj, "flag":1, "nameModal": nameModal, "fileModal": fileModal, "idModule": idModule}, 'resultModal');
    13.         });
    некий скрипт для передачи данных на аякс
    я чёто уже по инета перерыл, ajaxForm не подходит в этом решении :(

    нужно через ajax втупую решить и не могу понять как передать файлы... Он мне имена передаёт постом, а массив $_FILES в php пуст ёкарный бабай (((

    Поставьте плиз на путь истины мну по загрузке файлов, впервый раз решаю эту задачу и чё то она отказывается поддаваться решению.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    JavaScript FormData
     
  3. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Код (Text):
    1. <form id="image" enctype="multipart/form-data">
    Не спасло также массив files пустой
    --- Добавлено ---
    PHP:
    1. echo '<br>';
    2.             echo '<pre>';
    3.  
    4.                 echo $_POST['base'];
    5.             echo '</pre>';
    6.  
    7.                     $uploaddir = '/var/www/uploads/';
    8.                     $uploadfile = $uploaddir . basename($_FILES['file_up']['name']);
    9.  
    10.                     echo '<pre>';
    11.                     if (move_uploaded_file($_FILES['file_up']['tmp_name'], $uploadfile)) {
    12.                         echo "Файл корректен и был успешно загружен.\n";
    13.                     } else {
    14.                         echo "Возможная атака с помощью файловой загрузки!\n";
    15.                     }
    16.  
    17.                     echo 'Некоторая отладочная информация:';
    18.                     print_r($_FILES);
    19.  
    20.                     print "</pre>";
    21.  
    22.             exit();
    Вот так в php пытаюсь просмотреть, но пусто
    --- Добавлено ---
    $_POST есть а $_FILES пустой
    --- Добавлено ---
    а нашёл http://stackoverflow.com/questions/21044798/how-to-use-formdata-for-ajax-file-upload
    --- Добавлено ---
    но чёто js ругаетса собака


    Код (Javascript):
    1. var form = $('form')[0]; // You need to use standart javascript object here
    2.             var formData = new FormData(form);
     

    Вложения:

    • weqfqeg.png
      weqfqeg.png
      Размер файла:
      204,8 КБ
      Просмотров:
      5
  4. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Не хрена не грузит чёто
    уже даже просто на один экземпляр повесил не фига не грузит ёпт какой то
    HTML:
    1. <label class="field prepend-icon append-button file"><span class="button btn-primary">Выбрать файл</span>
    2.                     <input id="{{ file.id_string }}" type="file"  name="file_up" onchange="pussy(), document.getElementById('{{ file.name_string }}').value = this.value;" class="pussy gui-file">
    3.                     <input id="{{ file.name_string }}" type="text" name="{{ file.name_string }}" placeholder="Выбрать файл" class="gui-input">
    4.                     <label class="field-icon"><i class="fa fa-upload"></i></label>
    5.                 </label>
    Код (Javascript):
    1. function pussy() {
    2.             //alert('hello');
    3.             //var data = this.value;
    4.             var name = this.name;
    5.             var data = new FormData();
    6.             data.append('file', this.files[0]);
    7.             $result = ajaxFunc(root+'admin/modules/ajax/add-files',{"data":data,"name":name});
    8.             alert($result);
    9.         }
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    чото ржу...
     
  6. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Код (Javascript):
    1. function pussy() {
    2.             //alert('hello');
    3.             //var data = this.value;
    4.             var name = this.name;
    5.             var data = new FormData();
    6.             data.append('file', this.file);
    7.             $.ajax({
    8.                 url: root+'admin/modules/ajax/add-files',
    9.                 type: 'POST',
    10.                 data: {"data":data,"name":name},
    11.                 processData: false,
    12.                 contentType: false,
    13.                 //dataType: 'json',
    14.                 success: function(result) {
    15.                     alert(result);
    16.                 },
    17.                 error: function (result) {
    18.                     alert(result);
    19.                 }
    20.             });
    21.             //$result = ajaxFunc(root+'admin/modules/ajax/add-files',{});
    22.            
    Сделал так вхожу в обработчик но $_FILES пустой (((
    --- Добавлено ---
    @Ganzal да ржи хоть. Можешь хоть гавном закидать, да чё хочешь делай... :( :( Я сижу с утра втупить не могу как мне ajax $_FILES отправить :( :( :( с.ка

    Я чувствую что косяк вот в этой строчке

    Код (Javascript):
    1. data.append('file', this.file);
    Но я не знаю что туда написать :( а гугл не спасает перелопатил уже всё даже буржуев их решение под конкретную задачу, а у меня не срасты с их решением...
     
  7. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Лопата не та. Она тебе дана с родентом письками мериться. А программист из тебя туговатый.
     
  8. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @Ganzal мне пофигу на родента, у меня висит я массив $_FILES пустой ловлю! т.е по доке я делаю всё верно но какого то хера ловлю пустой пост что за бред ?
    --- Добавлено ---
    @Ganzal знаешь я уже как тока не сделал но просто пустой массив с $_FILES меня уже просто бесит, что не так я не пойму, дело в херовой документации если ты знаешь где что почитать что должно помочь, кидай почитаю. Ты же тупо срёшь сейчас, не стыдно гуру?
     
  9. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Ох, если тебе пофигу на родента, то чего ты регулярно устраиваешь истерики под его постами? Если было бы пофигу - проходил бы мимо. Но истерики есть. Следовательно твоё утверждение про пофигу - ложь. Не лги себе. То ты шашкой машешь как всезнающий, то залипаешь как баран перед новыми воротами. Пустышка. С чего мне стыдно-то должно быть? С того что ты сложил о себе определенное мнение на отдельно взятом ресурсе на просторах интернета? Это тебе стыдно должно быть, разве не? Ты же за помощью приходишь к тем же ребятам, перед которыми махал писькой. И у нас тут наступает когнитивный диссонанс - вроде парень опускает нас и задавливает знаниями, а вроде задаёт тупейшие вопросы и плавает в материале. На таких клоунов безусловно весело посмотреть. Вот и ржу.
     
  10. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @Ganzal понятно всё с тобой. Ты херовый человек сам по себе, я сделал мнение о тебе, я шашкой машу когда людям подсказывают хрень лютую. И извиняюсь когда сам был не прав, да будет тебе известно вот родент сегодня умную вещь сказал я ему лайк поставил.
     
  11. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @askanim да не со мной тебе должно быть понятно. У тебя задачка в JavaScript. Его понимать надо, не меня. Вечно тебе приходиться носом тыкать...
     
  12. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @Ganzal Да я не понимаю потому что не могу найти, решение своей задачи, в jquery почему то не выходит в гугле на оф доку, по formdata
     
  13. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Запятые, расставляет, пвсевдорандом. капец поколение выросло...
    --- Добавлено ---
    Дал тебе плюшку на месяц за уровень русского языка. Наслаждайся.
     
  14. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @Ganzal эм ? Бан чтоли опять?
    --- Добавлено ---
    Тема закрыта разобрался чуть позже закину код как делать закачку файлов через ajax form data чтобы не мучался так никто как я сегодня =_=
     
  15. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Не, пока не бан. Просто баллы. Но когда превысишь порог - отправишься отдыхать.
     
  16. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @Ganzal За что превышу порог ?) За то что спрашиваю на форуме php в разделе для новичков, или по факту говорю кому когда он не прав ? Я даже не матерюсь тока завуалированно, с точечками либо с подменой букв.

    Я не считаю себя гуру, просто когда вижу околесицу говорю как есть, и плевать что с русским проблемы как могу так и изъясняюсь может я не русский, это что россизм ?
     
  17. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Вот пример ещё один http://code.runnable.com/V6gwIJkQdVRyqDLc/

    PHP:
    1. <?php
    2. header('Content-Type: text/html; charset=utf-8');
    3. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    4.     var_export($_FILES);
    5.     echo PHP_EOL;
    6.     var_export($_POST);
    7.     exit();
    8. }
    9. ?>
    10. <!DOCTYPE html>
    11. <html>
    12. <head>
    13.     <title></title>
    14.     <script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.js"></script>
    15. </head>
    16. <body>
    17. <form id="form">
    18.     <input type="file" id="file" name="file">
    19.     <input type="text" id="test" name="test" value="Hello word!">
    20.     <input type="submit" name="Upload">
    21. </form>
    22. <pre id="result">no result</pre>
    23. <script type="text/javascript">
    24. $(function() {
    25.     $( "#form" ).submit(function( event ) {
    26.  
    27.     var formData = new FormData();
    28.  
    29.     formData.append('test', $("#test").val());
    30.     formData.append('file', $("#file")[0].files[0]);
    31.  
    32.     var jqxhr = $.ajax({
    33.             method: "POST",
    34.             url: "t.php",
    35.             data: formData,
    36.  
    37.             processData: false,
    38.             contentType: false
    39.         })
    40.         .done(function(data) {
    41.             $("#result").html(data);
    42.         })
    43.         .fail(function() {
    44.             alert( "error" );
    45.         });
    46.  
    47.         event.preventDefault();
    48.     });
    49. });
    50. </script>
    51. </body>
    52. </html>
     
  18. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @denis01 у меня с val не прошло прошло только с

    Код (Javascript):
    1. $("#file")[0].files[0]
    и $_FILES не пустой пришёл, уже стока про эт опрочетал так что говорю же решил вопрос, только у меня много инпутов с файлами и мне нужно их собрать все, так что я сделал вот так.

    HTML:
    1.  $('#ModalExe' ).on("click",function(  ) {
    2.             var formData = new FormData(document.getElementById('image')[0]); // Create an arbitrary FormData instance
    3.             formData.append('files', $('input[type=file]')[0].files[0]);
    4.             jQuery.ajax(root+'admin/modules/ajax/add-files', {
    5.                 processData: false,
    6.                 contentType: false,
    7.                 type: "POST",
    8.                 data: formData,
    9.                 success: function(result) {
    10.                     alert(result);
    11.                 },
    12.                 error: function (result) {
    13.                     alert(result);
    14.                 }
    15.             });
    16.         });
    --- Добавлено ---
    но цепляет тока один из-за того что вот эта строчка для одного благодоря 0 в массиве вопрос как цепануть весь массив

    Код (Javascript):
    1.  $('input[type=file]')[0].files[0]
    Я не знаю на что её заменить чтобы цепануть весь массив...

    сделал так синтаксическая ошибка.

    Код (Javascript):
    1. $('input[type=file]').files
    --- Добавлено ---@Ganzal вот на что на что а на баллы мне пофигу до колени, у меня другие интересы в жизни. Вот бан это конечно не приятно я не пообщаюсь, и не подскажу кому что нибудь да и сам не спрошу чего не знаю.
     
  19. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Просто превысишь порог штрафных баллов. Оно само тебя заблокирует. Моя задача только баллов тебе подсыпать. И я буду делать это по возможности. Хуёво разговариваешь на родном языке - неуважение ко всем собеседникам. Пыщ балл. С пеной у рта истеришь в целом, и в адрес родента в частности - ноу фёрвер экшн, ибо это весело.
     
  20. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Массив файлов? У тебя за раз много файлов?
    Циклом пройдись или each jquery
     
  21. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @Ganzal порой кажется, что тебе лет 15, веселишься с того с чего ржут дети.
    --- Добавлено ---
    @denis01 да
     
  22. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @askanim я могу понять, когда запятые опускают, если это не меняет смысла сообщения. Но ты реальный аутист, раз расставил запятые просто на отъебитесь. Ты перековеркал смысл своей фразы. Не-ни путаешь, дефисы в то-либо-нибудь пропускаешь. Ты школу-то закончить не забыл?
     
  23. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @denis01 вот сейчас пришёл к результату что я получаю хотя бы один теперь надо думать как два и более. Но я рад у меня есть результат :)
    --- Добавлено ---
    @Ganzal мне всегда было пофигу на русский язык, у меня было 4 по инглишу и 5 по алгебре, меня это устраивало.
    --- Добавлено ---
    @Ganzal геометрия мне не нравилась поэтмоу за заученные теоремы получил твёрдую тройку. :D А вот за русский железно был всегда трояк, но по литературе имел всегда 5, читаю оч хорошо :)
     
  24. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    У тебя имя input type=file как массив объявлено?
     
  25. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    askanim и denis01 нравится это.