2015-10-05 10 views
0

Я хочу загрузить большие файлы в ownCloud с помощью API WebDAV.Загрузка больших файлов в 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?

Благодаря

ответ

0

Используйте CURLOPT_RESUME_FROM_LARGE option.

Либо установите его в положение, чтобы начать возобновление. Или используйте -1, чтобы заставить завиток автоматически возобновиться в конце частично загруженного файла.

Обратите внимание, что это касается только удаленной стороны. Вам также нужно искать указатель чтения локального файла в том же положении (используя fseek). Итак, если вы хотите возобновить работу в конце частично загруженного файла, вам нужно сначала запросить его размер, чтобы узнать, где искать указатель чтения локального файла.
Для этого см. PHP: Remote file size without downloading file.