Есть ли возможность загрузить файл, сохраненный в 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");
}