@ree4i

Копирование фалйа на сервер, Как проверять прогресс?

Приведу часть кода сразу, голова уже не варит. Получив ссылку на фтп другого сервера, копирую файл к себе, а затем отправляю на 3й сервер.
Суть вопроса - мне нужно отправив файл на копирование на мой сервер отслеживать прогресс. Но ajax запрос внутри функции InfoFileSize не выполняется, пока не завершен основной запрос в котором идет копирование. Шо делать?!
function InfoFileSize(namefile, sizeLoad, id, str, err) {
	$.ajax({
		url: "?mod=edit2&p=info",
		type: 'POST',
		cache: false,
		data: "namefile=" + namefile + "&size=" + sizeLoad,
		success: function(data) {
			if ( data.length > 4 && err == 'err') {
				var DataUrl = data;
				$.ajax({
					type: 'POST',
					async: false,
					cache: false,
					data: "url=" + DataUrl,
					url: "?mod=edit2&p=copy",
					success: function(data) {
						str.html('Копирование...');
						setTimeout(ajaxwithi(id, data, str, DataUrl), 5000);
					},
					error: function(request, status, error) {
						str.html('error3 InfoFileSize:' + status + ',' + error);
					},
					dataType: 'json'
				});

				clearInterval(timer);
			} else {
				str.html("Скопировано " + data + ".");
			}
		},
		error: function(request, status, error) {
			str.html('error6:' + status + ',' + error);
		}
	});
}

// мне нужно отправить файл на копирование и отслеживать его.
				var splitData = data.split('|');
				var ftp = splitData[0];
				var sizeLoad = splitData[1];
				var namefile = splitData[2];
				str.html("Ссылка на FTP получена. Копируем на сервер.");

				var timer = setInterval(function() {
					InfoFileSize(namefile, sizeLoad, id, str, false);
				}, 2000);

				$.ajax({
					type: 'POST',
					cache: false,
					data: "url=" + ftp,
					url: "?mod=edit2&p=copy_to_server",
					success: function(data) {
						var DataUrl = data;
						$.ajax({
							type: 'POST',
							async: false,
							cache: false,
							data: "url=" + DataUrl,
							url: "?mod=edit2&p=copy",
							success: function(data) {
								str.html('Копирование ...');
								setTimeout(ajaxwithi(id, data, str, DataUrl), 5000);
							},
							error: function(request, status, error) {
								str.html('error3:' + status + ',' + error);
							},
							dataType: 'json'
						});
					},
					error: function(request, status, error) {
						clearInterval('timer');
						var timer = setInterval(function() {
							InfoFileSize(namefile, sizeLoad, id, str, 'err');
						}, 2000);
					},
					dataType: 'json'
				});
  • Вопрос задан
  • 130 просмотров
Пригласить эксперта
Ответы на вопрос 1
@furashcka
Если правильно понял
XMLHttpRequest.upload.progress - событие, которые вызывается при отправке данных на сервер
для jQuery используйте плагин, например - https://blueimp.github.io/jQuery-File-Upload/ или костыль - https://stackoverflow.com/questions/15668339/can-o...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы