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て、部分的にアップロードされたファイルの最後でカールが自動的に再開されるようにします。

これはリモート側のみに影響することに注意してください。また、同じ位置へのローカル ファイル読み取りポインターをシークする必要があります (を使用fseek)。そのため、部分的にアップロードされたファイルの最後で再開したい場合は、最初にそのサイズを照会して、ローカル ファイルの読み取りポインターを探す場所を知る必要があります。
そのためには、ファイルをダウンロードせずにリモート ファイル サイズを参照してください。

于 2015-10-06T06:36:26.843 に答える