0

我想使用 WebDAV API 将大文件上传到 ownCloud。

我使用此代码来执行此操作:

<?php
$url = "http://user:password@owncloud.local/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 恢复文件上传?

谢谢

4

1 回答 1

0

使用CURLOPT_RESUME_FROM_LARGE选项

要么将其设置为开始简历的位置。或者使用-1使 curl 在部分上传的文件末尾自动恢复。

请注意,这仅影响远程端。您还需要寻找指向相同位置的本地文件读取指针(使用fseek)。所以,如果你想在部分上传的文件末尾恢复,你需要先查询它的大小,知道在哪里寻找本地文件读取指针。
为此,请参阅远程文件大小而不下载文件

于 2015-10-06T06:36:26.843 回答