通过共享链接(URL)获取OneDrive文件夹的内容

问题描述 投票:0回答:2

我有一个OneDrive文件夹的URL(https://1drv.ms/f/s!AtXoQFW327DIyMwPjZhmauUCSSHXUA)。拥有该链接的每个人都可以通过浏览器访问该文件夹。

现在,我的目标是创建一个.NET应用程序,在给定该链接的情况下,该应用程序能够获取该文件夹中的文件/文件夹列表。

这甚至可能吗?

c# .net onedrive
2个回答
1
投票

执行此操作的最佳方法是使用通过Graph公开的OneDrive API。

您可以阅读"Using Sharing Links"文档以获取完整的详细信息,但您基本上可以致电:

https://graph.microsoft.com/v1.0/shares/u!aHR0cHM6Ly8xZHJ2Lm1zL2YvcyFBdFhvUUZXMzI3REl5TXdQalpobWF1VUNTU0hYVUE/driveItem/children

你也可以使用.NET SDK来避免自己调用API,在这种情况下你的代码看起来像:

client.Shares["u!aHR0cHM6Ly8xZHJ2Lm1zL2YvcyFBdFhvUUZXMzI3REl5TXdQalpobWF1VUNTU0hYVUE"].DriveItem.Children.Request().GetAsync();

0
投票

Selenium Web Driver是这类任务的不错选择。

  1. Open Solution Explorer。
  2. 右键单击您的项目。
  3. 选择Manage NuGet Packages ..
  4. 浏览并安装这两个:Selenium.Chrome.WebDriverSelenium.WebDriver
  5. 您刚刚在项目中安装了selenium!

所以现在,我们需要创建一个驱动程序服务,并在我们的网站中找到所需的元素。据我所知,文件名存储为名为signalFieldValue_03700093的span类。

但是“Last Modified infos”也存储在这个类下面,我需要使用下面的代码跳过“Last Modified infos”:

        bool skip = false;
        List<string> myFiles = new List<string>();

        ChromeDriverService service = ChromeDriverService.CreateDefaultService();
        ChromeOptions option = new ChromeOptions();
        var driver = new ChromeDriver(service, option);

        driver.Url = "https://1drv.ms/f/s!AtXoQFW327DIyMwPjZhmauUCSSHXUA";
        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);

        foreach (IWebElement element in driver.FindElements(By.XPath("//span[@class='signalFieldValue_03700093']")))
        {
            if (!skip)
            {
                myFiles.Add(element.Text);
                skip = true;
            }
            else
                skip = false;
        }

结果,我们在名为myFiles的字符串数组中有我们的文件名。

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.