Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Индикптор загрузки на FTP, Вывод информации о загрузке
Andrey_1  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 43258
На форуме: 3 месяца, 21 день
Карма:




Доброго всем времени суток.
Сделал загрузку файлов на ftp-сервер на основе этой статьи - http://www.internet-technologies.ru/articl...ticle_1707.html
Всё работает, но вот при загрузке больших файлов не видно процесса, т.е. я знаю что надо подождать отчёта, а user.....
Нужен какой-то прогресс-бар или просто хотя бы вывести сообщение типа "Ждите идёт загрузка", конечно индикатор лучше.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
SlavaFr  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1535
Пользователь №: 22453
На форуме: 6 лет, 6 месяцев, 4 дня
Карма: 104




Ну ты вроде сам ответил на свой вопрос. Осталось толко найти подходящий progressbar или взять готовый.
Например http://www.w3schools.com/howto/howto_js_progressbar.asp


--------------------
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Andrey_1  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 43258
На форуме: 3 месяца, 21 день
Карма:




Спасибо! Буду осваивать!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Andrey_1  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 43258
На форуме: 3 месяца, 21 день
Карма:




Что-то не так делаю.
Прогресс бар появился, но он пробегает сам по себе, не зависимо от загрузки.
А внизу браузера висит ожидание ответа от сервера. Как то надо подключить к процессу. На мой взгляд надо сравнивать размер исходного файла и размер этого файла в конечной папке. Но как это сделать?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1755
Пользователь №: 20757
На форуме: 6 лет, 10 месяцев, 4 дня
Карма: 184




Цитата (Andrey_1 @ 16.08.2016 - 12:08)
А внизу браузера висит ожидание ответа от сервера.

Все верно. Ответ от сервера не придет пока скрипт не завершит работу, т.е. пока файл не будет загружен.
Видится два варианта решения задачи. Но в обоих случаях - это "параллельные" (ajax) запросы ко второму скрипту (например, check.php), чтобы узнать прогресс по загрузке.
Первый вариант:
скрипт check.php подключается к ftp серверу и делает ftp_size, чтобы получить размер файла, который загружается. Затем делает $progress = 100 / $originalFileSize * $ftpfileSize, где $originalFileSize - размер файла, который загружаем, $ftpfileSize - размер загруженного файла, который вернул ftp_size, $progress - процент загрузки.
Второй вариант:
В цикле частями читаешь файл $chunk = fread($f, $chunkSize);, затем загружаешь $chunk по ftp и во временный файл пишем процент загруженного. Параллельными запросами получаешь содержимое файла - это и будет прогресс загрузки.
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Andrey_1  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 43258
На форуме: 3 месяца, 21 день
Карма:




В принципе мне понятен первый вариант! но как создать (ajax) запросы? Т.е это такой же скрипт как js, только он будет возвращать значение $progress = 100 / $originalFileSize * $ftpfileSize. heck.php я могу создать, Но как его выполнять в цикле? или я не в ту сторону мыслю?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1755
Пользователь №: 20757
На форуме: 6 лет, 10 месяцев, 4 дня
Карма: 184




Andrey_1, да, это js скрипт, который периодически, пока прогресс не достиг 100, шлет запросы к скрипту check.php
Если используется jquery, то типа такого:
function uploadProgressChecker() {
$.get("check.php", function(data) {
console.log(data);
if(parseInt(data) < 100)
setTimeout(uploadProgressChecker, 500);
});
}

Эта функция будет делать запросы к check.php пока он возвращает число меньше 100, и записывать результат в консоль.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Andrey_1  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 43258
На форуме: 3 месяца, 21 день
Карма:




Здесь data - это переменная $data ?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Andrey_1  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 43258
На форуме: 3 месяца, 21 день
Карма:




Скрытый текст

function move() {
  var elem = document.getElementById("myBar");  
  var width = 0;
   $.get("check.php", function(data) {
  console.log(data);
  if(parseInt(data) < 100)
   elem.style.width =data + '%';
  document.getElementById("label").innerHTML =data * 1  + '%';
  setTimeout(uploadProgressChecker, 500);
}) };


не знаю js, но
Вот так правильно будет?

Это сообщение отредактировал Andrey_1 - 16.08.2016 - 13:28
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Andrey_1  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 43258
На форуме: 3 месяца, 21 день
Карма:




function move() {
var elem = document.getElementById("myBar");
var width = 0;
$.get("check.php", function(data) {
console.log(data);
if(parseInt(data) < 100)
elem.style.width =data + '%';
document.getElementById("label").innerHTML =data * 1 + '%';
setTimeout(uploadProgressChecker, 500);
}) };
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Andrey_1  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 43258
На форуме: 3 месяца, 21 день
Карма:




Не правильно я сделал. Подскажите пожалуйста
мой progress.js , который работает.
Скрытый текст

function move() {
  var elem = document.getElementById("myBar"); 
  var width = 0;
  var id = setInterval(frame, 100);
  function frame() {
    if (width >= 100) {
      clearInterval(id);
    } else {
      width++;
      elem.style.width =width + '%';
      document.getElementById("label").innerHTML =width * 1  + '%';
    }
  }
}


как сюда прикрутить check_file.php и как передавать переменную date из check_file.php
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1755
Пользователь №: 20757
На форуме: 6 лет, 10 месяцев, 4 дня
Карма: 184




Цитата (Andrey_1 @ 16.08.2016 - 17:55)
как сюда прикрутить check_file.php

function move() {
var elem = document.getElementById("myBar"),
label = document.getElementById("label");
function uploadProgressChecker() {
$.get("check.php", function(data) {
data = parseInt(data);
elem.style.width = data + '%';
label.innerHTML = data + '%'
if(data < 100)
setTimeout(uploadProgressChecker, 500);
});
}
}

Если нет jquery, то вместо $.get() используй https://learn.javascript.ru/ajax-xmlhttprequest
Цитата (Andrey_1 @ 16.08.2016 - 17:55)
как передавать переменную date из check_file.php

Просто выводи значение в check_file.php (но ничего больше, только одно число):
echo floor(100 / $originalFileSize * $ftpfileSize);
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Andrey_1  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 43258
На форуме: 3 месяца, 21 день
Карма:




Сделал. Но проблема сейчас в передаче данных в файл check.php . Т.е - имя файла исходящего, и путь и имя файла на ftp, Если COOKIE, то они появляются после загрузки файла, Если из формы $_POST, то нет этих данных в параметрах загрузки.

И второе, какой скрипт использовать и как принимать процент загрузки в php ?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса