首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OneDrive SDK从OneDrive下载文件

使用OneDrive SDK从OneDrive下载文件
EN

Stack Overflow用户
提问于 2016-07-21 19:25:33
回答 1查看 1.3K关注 0票数 0

我正在尝试使用OneDrive SDK从OneDrive下载一个文件。我有一个UWP应用程序,我已经创建。

我已经连接到我的OneDrive帐户,但不知道从那里要做什么。有很多答案,但它们似乎与新的OneDrive软件开发工具包无关。

我想用C#做这个方法。

代码语言:javascript
复制
StorageFile downloadedDBFile = await ApplicationData.Current.LocalFolder.CreateFileAsync("\\shared\\transfers\\" + App.dbName, CreationCollisionOption.ReplaceExisting);
Item item = await oneDriveClient.Drive.Root.ItemWithPath("Apps/BicycleApp/ALUWP.db").Request().GetAsync();

oneDriveClient连接正常。我甚至得到了“物品”。正如您所看到的,它位于我的OneDrive上的一个子目录中。

我在一个名为downloadedDBFile的子目录中创建了一个本地文件,以便可以将OneDrive文件的内容复制到。

从这里我该怎么做?

我已经使用这种方法将文件上传到OneDrive,没有问题。

代码语言:javascript
复制
IStorageFolder sf = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFolderAsync("shared\\transfers");
var folder = ApplicationData.Current.LocalFolder;
var files = await folder.GetFilesAsync();

StorageFile dbFile = files.FirstOrDefault(x => x.Name == App.dbName);
await dbFile.CopyAsync(sf, App.dbName.ToString(), NameCollisionOption.ReplaceExisting);
StorageFile copiedFile = await StorageFile.GetFileFromPathAsync(Path.Combine(ApplicationData.Current.LocalFolder.Path, "shared\\transfers\\" + App.dbName));

var randomAccessStream = await copiedFile.OpenReadAsync();
Stream stream = randomAccessStream.AsStreamForRead();


var item = await oneDriveClient.Drive.Special.AppRoot.Request().GetAsync();

txtOutputText.Text = "Please wait.  Copying File";

using (stream){var uploadedItem = await oneDriveClient.Drive.Root.ItemWithPath("Apps/BicycleApp/ALUWP.db").Content.Request().PutAsync<Item>(stream);}

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2016-07-22 00:35:10

您要返回的Item对象不是文件内容,它很可能是关于文件的信息。相反,您需要使用Content属性以流的形式获取文件内容,然后可以将其复制到文件中。代码如下所示:

代码语言:javascript
复制
using (var downloadStream = await oneDriveClient.Drive.Root.ItemWithPath("Apps/BicycleApp/ALUWP.db").Content.Request().GetAsync())
{
    using (var downloadMemoryStream = new MemoryStream())
    {
        await downloadStream.CopyToAsync(downloadMemoryStream);
        var fileBytes = downloadMemoryStream.ToArray();
        await FileIO.WriteBytesAsync(downloadedDBFile, fileBytes);
    }
}

注意对OneDrive的调用的.Content,它返回一个流,而不是Item对象。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38503003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档