DDT
Новичок
curl: можно ли определить размер переданных данных НА сервер?
Привет.
Вот тестовый код, загружающий файл file.zip на удаленный сервер:
Все работает нормально. Т. к. предполагается передавать файлы большого размера (50 - 100 Мб), то хочу сделать прогрессбар загрузки файла. Для этого мне надо периодически определять количество переданных байт на сервер.
Как это можно сделать?
Привет.
Вот тестовый код, загружающий файл file.zip на удаленный сервер:
PHP:
// Задаем скрипт на сайте B, который примет наш запрос и обработает его
$url = 'http://test/';
// Указываем файл, который мы хотим передать сайту B
// Если файл находится не в текущей дирректории, то необходимо
// указать путь до файла
$file = dirname(__FILE__).'../../file.zip';
// Узнаем размер передаваемого файла
$filesize = filesize($file);
// Узнаем имя файла (в случае, если в $file указан полный путь до файла)
$pathinfo = pathinfo($file);
$filename = $pathinfo['basename'];
// Открываем передаваемый файл на чтение
// для дальнейшей его передачи
$fp = fopen($file, 'r');
// Инициализируем сеанс CURL
$ch = curl_init();
// Задаем параметры для открытого сеанса CURL
// Указываем URL скрипта, который примет наш запрос
// К имени скрипта добавляем переменную, содержащую имя передаваемого файла
// Чтобы это имя было доступно в принимающем скрипте из массива $_GET
curl_setopt($ch, CURLOPT_URL, $url . '?filename=' . $filename);
// Указываем файл (а вернее дескриптор открытого на чтение файла), который собираемся передать
curl_setopt($ch, CURLOPT_INFILE, $fp);
// Указываем предполагаемый размер отправляемого файла
curl_setopt($ch, CURLOPT_INFILESIZE, $filesize);
// Указываем, что файл передается методом PUT
curl_setopt($ch, CURLOPT_PUT, true);
// Указываем, что будет производиться закачка на удаленный сервер
curl_setopt($ch, CURLOPT_UPLOAD, true);
// Выполняем запрос CURL
curl_exec($ch);
// Завершаем сеанс CURL
curl_close($ch);
Как это можно сделать?