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

时间:2018-09-01 09:57:22

标签: c# .net onedrive

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

现在,我的目标是创建一个.NET应用程序,通过该链接,该应用程序能够获取该文件夹内文件/文件夹的列表。

那有可能吗?

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

Selenium Web Driver是执行此类任务的不错选择。

  1. 打开解决方案资源管理器。
  2. 右键单击您的项目。
  3. 选择“管理NuGet软件包”。
  4. 浏览并安装以下两个:Selenium.Chrome.WebDriverSelenium.WebDriver
  5. 您刚刚将硒安装到了项目中!

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

但是“ 最后修改的信息”也存储在此类下,我需要使用以下代码跳过“ 最后修改的信息”:

        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的字符串数组中。

希望这会有所帮助!