Я хочу загрузить большие файлы в ownCloud с помощью API WebDAV.
Я использую этот код для этого:
<?php
$url = "http://user:[email protected]/remote.php/webdav/test.mp4";
$localfile = "test.mp4";
$fp = fopen ($localfile, "r");
$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PUT, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));
$http_result = curl_exec($ch);
$error = curl_error($ch);
$http_code = curl_getinfo($ch ,CURLINFO_HTTP_CODE);
curl_close($ch);
fclose($fp);
print $http_code;
print "<br /><br />$http_result";
if ($error) {
print "<br /><br />$error";
}
?>
Но когда соединение потеряно, этот скрипт не может возобновить загрузку файла.
Можно ли возобновить загрузку файлов с помощью WebDAV?
Спасибо
Использовать CURLOPT_RESUME_FROM_LARGE
вариант.
Либо установите его в положение, чтобы начать резюме с. Или используйте -1
чтобы завиток автоматически возобновился в конце частично загруженного файла.
Обратите внимание, что это влияет только на удаленную сторону. Вам также нужно искать указатель чтения локального файла в той же позиции (используя fseek
). Итак, если вы хотите возобновить работу в конце частично загруженного файла, вам нужно сначала запросить его размер, чтобы узнать, где искать указатель на чтение локального файла.
Для этого см. PHP: удаленный размер файла без загрузки файла.
Других решений пока нет …