Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Загрузка файла на сервер AJAX

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

koreets2011



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите что я не так делаю?
 

Код:
 
            var file_data = $('#f').prop('files')[0];
        var form_data = new FormData();
        form_data.append('file', file_data);
        $.ajax({
                    url: 'core.php',
                    dataType: 'text',
                    cache: false,
                    contentType: false,
                    processData: false,
                    data: {module: 'uploads', form_data},
                    type: 'post',
                    success: function(data){
                        alert(data);
                    }
         });
 

 
На сервере
 

Код:
 
        if($module == "uploads"){
           $patch = $_SERVER['DOCUMENT_ROOT'].'/uploads/';
 
           if(move_uploaded_file($_FILES['file']['tmp_name'], $patch.$_FILES['file']['name'])){
            echo "Ok";
           } else {
            echo "error";
           }
       }
 

 
В итоге я не получаю даже "error"

Всего записей: 370 | Зарегистр. 13-10-2011 | Отправлено: 09:05 30-11-2017
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011

Цитата:
{module: 'uploads', form_data}

зачем? что мешает добавить нужное к FormData?
наверняка это преобразует multipart во что то еще - смотреть в каком виде отправляется в логах сетевой активности

Всего записей: 6942 | Зарегистр. 20-09-2014 | Отправлено: 09:28 30-11-2017
koreets2011



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii спасибо!!!  
Затупил, блин совсем )))
 
Все ок!!!

Всего записей: 370 | Зарегистр. 13-10-2011 | Отправлено: 09:55 30-11-2017
vs6262



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011
поделитесь плиз последними наработками в ПМ ?
 
заранее спасибо

Всего записей: 1664 | Зарегистр. 25-02-2013 | Отправлено: 20:38 18-12-2017
vs6262



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
я думаю вот и все решение
 
https://stackoverflow.com/questions/23980733/jquery-ajax-file-upload-php
 
 
Добавлено:
остается только встроить корреспонденцию пакетами по 1МБ иначе в "php.ini" всегда на новом хостинге придется повышать  upload_max_filesize и post_max_size

Всего записей: 1664 | Зарегистр. 25-02-2013 | Отправлено: 06:06 19-12-2017
vs6262



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
тут я применяю FileReader() но не работает. может кто поможет ?
я хочу загружать частями
 

Код:
<script>
 
if (FileReader.prototype.readAsBinaryString === undefined) {
    FileReader.prototype.readAsBinaryString = function (fileData) {
        var binary = "";
        var pt = this;
        var reader = new FileReader();
        reader.onload = function (e) {
            var bytes = new Uint8Array(reader.result);
            var length = bytes.byteLength;
            for (var i = 0; i < length; i++) {
                binary += String.fromCharCode(bytes[i]);
            }
            pt.content = binary;
            pt.onloadend();
        }
        reader.readAsArrayBuffer(fileData);
    }
}
 
function readBlob(startByte, endByte) {  
 
    var files = document.getElementById('files').files;  
     
    var file = files[0];  
    var start = parseInt(startByte) || 0;  
    var stop = parseInt(endByte) || file.size - 1;  
 
    var fileReader = new FileReader();  
 
    fileReader.onloadend = function(evt) {
      if (this.content || evt.target.readyState == FileReader.DONE) { // DONE == 2  
       
          var _reasult = this.content ? this.content : evt.target.result;
        //alert(this.content ? this.content : evt.target.result);
        //document.getElementById('byte_content').textContent = this.content ? this.content : evt.target.result;  
             /*  document.getElementById('byte_range').innerHTML =  
            ['Read bytes: ', start + 1, ' - ', stop + 1,  
             ' of ', file.size, ' byte file'].join('');  
             */
             
               $.ajax({
                url: 'upload.php', // point to server-side PHP script  
                dataType: 'text',  // what to expect back from the PHP script, if anything
                cache: false,
                contentType: false,
                processData: false,
                data: _reasult,                          
                type: 'post',
                success: function(php_script_response){
                    alert(php_script_response); // display response from the PHP script, if any
                }
             });
      }  
    };  
 
    var blob = file.slice(start, stop + 1);
    fileReader.readAsBinaryString(blob);
  }  
   
  document.querySelector('.readBytesButtons').addEventListener('click', function(evt) {  
    if (evt.target.tagName.toLowerCase() == 'button') {  
      var startByte = evt.target.getAttribute('data-start');  
      var endByte = evt.target.getAttribute('data-end');  
      readBlob(startByte, endByte);  
    }  
  }, false);  
 
</script>  


Код:
<?php
 
    if ( 0 < $_FILES['file']['error'] ) {
        echo 'Error: ' . $_FILES['file']['error'] . '<br>';
    }
    else {
        move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']);
    }
 
?>

Всего записей: 1664 | Зарегистр. 25-02-2013 | Отправлено: 21:57 19-12-2017 | Исправлено: vs6262, 22:02 19-12-2017
vs6262



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
мне вообще то нужно связать FileReader() с Ajax правильно и хотя бы файл до 1 МБ загрузить, а дальше буду смотреть

Всего записей: 1664 | Зарегистр. 25-02-2013 | Отправлено: 18:29 20-12-2017
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vs6262
я же дал ссылку, что непонятно?
http://usefulangle.com/post/14/jquery-2-ways-of-ajax-file-upload-formdata-and-filereader

Всего записей: 6942 | Зарегистр. 20-09-2014 | Отправлено: 18:43 20-12-2017
vs6262



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
так я хочу по частям по 1МБ
 
Добавлено:
я знаю PHP прийдется переделать тоже

Всего записей: 1664 | Зарегистр. 25-02-2013 | Отправлено: 19:03 20-12-2017
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vs6262
зачем расползаетесь?
Загрузка файла на сервер средствами XMLHttpRequest
ну и вырезайте нужный кусок файл и отправляйте, на сервере соединяйте в один файл.

Всего записей: 6942 | Зарегистр. 20-09-2014 | Отправлено: 20:05 20-12-2017
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Загрузка файла на сервер AJAX

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru