Загрузить файл из SharePoint в хранилище OwnCloud через WebDAV.Client напрямую - PullRequest
0 голосов
/ 26 июня 2019

Есть ли возможность загрузить файл, сохраненный в SharePoint через WebDAV.Client, в OwnCloud систему хранения без загрузки его сначала на локальный диск?Есть ли способ загрузить его напрямую из SharePoint?

Я знаю способ сохранить файл с локального диска в хранилище OwnCloud, но это не работает с URL

http://portal.site.de/sites/IT/How%20To/Abfrage-%20und%20Layoutgenerator.doc

или путь webdav SharePoint

\\portal.site.de\DavWWWRoot\sites\IT\How To\Abfrage- und Layoutgenerator.doc

Это мой текущий код:

private async Task UploadFileTask(string fileSource)
{
    Response = await Client.PutFile(Path.GetFileName(fileSource), File.OpenRead(fileSource));
}
IWebDavClient webdavClient = new WebDavClient();
var clientParams = new WebDavClientParams
{
    BaseAddress = new Uri("https://cloud.site.com/remote.php/webdav/"),
    Credentials = new NetworkCredential(user, password)
};
webdavClient = new WebDavClient(clientParams);
UploadFileTask(fileSource: fileSource).Wait();
if (Response.IsSuccessful)
{
    var client = new RestClient("https://cloud.site.com/ocs/v1.php/apps/files_sharing/api/v1/");
    client.Authenticator = new HttpBasicAuthenticator(user, password);

    var request = new RestRequest("shares", Method.POST);
    request.AddParameter("name", System.IO.Path.GetFileName(fileSource)); // adds to POST or URL querystring based on Method
    request.AddParameter("path", "" + System.IO.Path.GetFileName(fileSource)); 
    request.AddParameter("shareType", 3);
    request.AddParameter("publicUpload", false);
    request.AddParameter("permissions", 1); 
    request.AddParameter("expireDate", DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"));
    IRestResponse response = client.Execute(request);
    XmlDocument answer = new XmlDocument();
    answer.InnerXml = response.Content;
    XmlNode ocsNode = answer.SelectSingleNode("ocs");
    XmlNode metaNode = ocsNode.SelectSingleNode("meta");
    XmlNode dataNode = ocsNode.SelectSingleNode("data");
    if (metaNode.SelectSingleNode("status").FirstChild.Value == "ok" && metaNode.SelectSingleNode("statuscode").FirstChild.Value == "100")
    {
        linkLabel1.Text = dataNode.SelectSingleNode("url").FirstChild.Value;
    }
    else
    {
        throw new Exception(metaNode.SelectSingleNode("message").FirstChild.Value);
    }
}
else
{
    throw new Exception("Upload failed");
}
...