Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Динамическая загрузка файлов (https://javascript.ru/forum/misc/73614-dinamicheskaya-zagruzka-fajjlov.html)

Samsam 28.04.2018 16:58

Динамическая загрузка файлов
 
Динамическая загрузка файлов


<input onchange="uploadFile()" type='file' id='upload'>


function uploadFile() {
	var data = new FormData(); //New FormData
	data.append('file', $("#upload").prop('files')[0]);

	$.ajax({ 
			url: 'upload.php', 
			type: 'POST',
			data: data,
			processData: false, 
			contentType: false,
			success: function(respond){
				alert('ok');
				}
		});
	}


Очень долго передаёт данные файла. Хотя я даже не загружаю их. а просто хочу передать данные. Как это исправить ?

Samsam 28.04.2018 18:15

да чего то затормозил )) .. для получения данных он всё равно предварительно загружает на сервер, верно ?

а вот ещё один момент.

...
xhr: function(){

var xhr = $.ajaxSettings.xhr(); // получаем объект XMLHttpRequest
xhr.upload.addEventListener('progress', function(e){
...
}
});
Почему e.loaded показывает загрузку файла намного быстрее чем на самом деле ?

Samsam 28.04.2018 18:23

файл ещё не загрузился а e.loaded выдаёт что загрузилось

Samsam 28.04.2018 18:35

$.ajax({ 
			url: 'upload.php', 
			type: 'POST',
			data: data,
			processData: false, 
			contentType: false,
		 	xhr: function(){
				var xhr =  new XMLHttpRequest(); 
				xhr.upload.addEventListener('progress', function(evt){
				  if(evt.lengthComputable) { 
					var percentComplete = Math.ceil(evt.loaded / evt.total * 100 );
					$("#progress").css('width', percentComplete+'%');
				  }
				}, false);
				return xhr;
			}, 
			
			success: function(respond){
				alert('ВОТ ЗДЕСЬ Я ПОНИМАЮ ЧТО ФАЙЛ ЗАГРУЗИЛСЯ');
				}
		});


но прогресс бар быстрее заполняется

Samsam 28.04.2018 18:49

прогресс бар заполняется здесь ->> $("#progress").css('width', percentComplete+'%');


выполняется после удачной загрузки, ->> alert();

но прогресс бар заполнятся за 2-3 секунды хотя я загружаю 100мб . ну а alert() выходит уже после удачной загрузки

Samsam 28.04.2018 19:08

Нет не локалка

Цитата:

Сообщение от Rise (Сообщение 484367)
а за сколько надо по сети же не передается?

. что не передаётся ?

Samsam 28.04.2018 19:19

да пустой

Samsam 28.04.2018 20:55

Да это так. Но вопрос всё же в силе.

А вообще как именно работает эта функция ?

var xhr = new XMLHttpRequest();
xhr.upload.addEventListener('progress', ....

Samsam 28.04.2018 21:34

Цитата:

Сообщение от Rise (Сообщение 484385)

Там внизу есть пример. Попробуйте выбрать и загрузить файл побольше.
то уведите что индексация прогресса за пару секунд закончится. хотя понятно что за это время файл не загрузится

Samsam 28.04.2018 21:52

там нет ограничений

Samsam 28.04.2018 22:23

У меня загружает

Samsam 28.04.2018 22:23

https://learn.javascript.ru/xhr-onprogress

Samsam 28.04.2018 22:33

Индикатор прогресса он же всё равно показывает

Samsam 28.04.2018 23:01

я выбираю на загрузку файл 500 мб . а индикатор за 2 секунды показывает что файл загрузился. То есть не соответствует реальному времени загрузки

Samsam 28.04.2018 23:35

на локалке всё тоже самое

Samsam 30.04.2018 13:43

Нет, ограничений нет. Просто запрос evt.loaded сообщает о полной загрузке намного быстрее чем на самом деле xhr.upload.addEventListener('progress', ...

evt.loaded за считанные секунды показывает что загрузился весь обьём. хотя загрузка ещё идёт. Загружаю файла от 100 до 200 мб, поэтому нужен точный прогресс бар что бы пользователь понимал что идёт загрузка.


Часовой пояс GMT +3, время: 22:20.