UWP 使用Windows Community Toolkit 的OneDrive service上传下载文件

上一年年底写过两篇文章

UWP 使用OneDrive云存储2.x api(一)【全网首发】

UWP 使用OneDrive云存储2.x api(二)【全网首发】

没想到半年之后,VS编译提示方法已经过时了,可见微软朝三暮四,气走开发者的传言,并不假??????

不过新升级后的OneDrive service更加好用了,但是我没感觉出来??????

下面就来和大家分享一下新版的使用方法。

要把大象装,啊呸,哪有大象??了。要想使用OneDrive API,拢共分三步???

1. 注册应用程序ID

2. 授权程序功能

3. 使用OneDrive API

好吧,开始

1. 注册应用程序ID

去 https://apps.dev.microsoft.com/,在已聚合的应用旁边,选择添加应用,按照向导走,注意选择“Mobile and Desktop App”.

完成之后应该就有下图了。

注意记住这个应用ID,一会要用到。最好的办法就是收藏一下这个页面咯。

2. 授权程序功能

打开 Package.appxmanifest,进入“功能”页面,勾选   ?专用网络(客户端和服务端)。如图

3. 使用OneDrive API

3.0 下载NuGet包

打开NuGet,搜索Microsoft.Toolkit.Uwp.Services,安装3.0版本或以上。

友情提示:4.0还有可能会变哦

3.1 初始化

一句话搞定

string[] scopes = new string[] { MicrosoftGraphScope.FilesReadWriteAppFolder};OneDriveService.Instance.Initialize("刚才申请的那个应用ID", scopes, null, null);

scopes是使用的权限,我的App只需要使用OneDrive下的应用程序文件夹,所以就是这个了。当然还有其它的权限,比如 Files.Read.All,Files.ReadWrite.All等,详见MicrosoftGraphScope下面的枚举。

3.2 登录

核心也是一句话

if (await OneDriveService.Instance.LoginAsync())
                {
                    OneDriveStorageFolder oneDriveAppFolder = await OneDriveService.Instance.AppRootFolderAsync();
                    TipServices.TipAuthenticateSuccess();
                }
                else
                {
                    TipServices.TipAuthenticateFail();
                    throw new Exception("Unable to sign in");
                }

在登录成功后,我马上获取了OneDrive下面的应用程序文件夹。别的文件夹坚决不访问,不做流氓行为。坚决不向BAT看齐。

 3.3 获取文件

循环获取

var OneDriveItems = await folder.GetItemsAsync();
do
{
    OneDriveItems = await folder.NextItemsAsync();
}
while (OneDriveItems != null);

 3.4 创建文件夹

string newFolderName = await OneDriveSampleHelpers.InputTextDialogAsync("New Folder Name");
if (!string.IsNullOrEmpty(newFolderName))
{
    await folder.StorageFolderPlatformService.CreateFolderAsync(newFolderName, CreationCollisionOption.GenerateUniqueName);
}

3.5 进入子文件夹

var currentFolder = await _graphCurrentFolder.GetFolderAsync(item.Name);
OneDriveItemsList.ItemsSource = await currentFolder.GetItemsAsync(20);
_graphCurrentFolder = currentFolder;

3.6 移动、复制、重命名项目

await _onedriveStorageItem.MoveAsync(targetonedriveStorageFolder);

await _onedriveStorageItem.CopyAsync(targetonedriveStorageFolder);

await _onedriveStorageItem.RenameAsync("NewLevel3");

3.7 创建/上传小于4M的文件

var selectedFile = await OpenLocalFileAsync();
if (selectedFile != null)
{
    using (var localStream = await selectedFile.OpenReadAsync())
    {
        var fileCreated = await folder.StorageFolderPlatformService.CreateFileAsync(selectedFile.Name, CreationCollisionOption.GenerateUniqueName, localStream);
    }
}

3.8 创建/上传大于4M的文件

var selectedFile = await OpenLocalFileAsync();
if (selectedFile != null)
    {
        using (var localStream = await selectedFile.OpenReadAsync())
        {
            Shell.Current.DisplayWaitRing = true;

            // If the file exceed the Maximum size (ie 4MB)
            var largeFileCreated = await folder.StorageFolderPlatformService.UploadFileAsync(selectedFile.Name, localStream, CreationCollisionOption.GenerateUniqueName, 320 * 1024);
        }
    }
}

至于为什么非要区分,而且是4M为分界线,我也不清楚。好像GayHub上讨论过,有兴趣可以去查下。

3.9 下载文件

var oneDriveFile = (Toolkit.Services.OneDrive.OneDriveStorageFile)item;
using (var remoteStream = (await oneDriveFile.StorageFilePlatformService.OpenAsync()) as IRandomAccessStream)
{
    await SaveToLocalFolder(remoteStream, oneDriveFile.Name);
}

3.10 获取缩略图

var file = (Toolkit.Services.OneDrive.OneDriveStorageItem)((AppBarButton)e.OriginalSource).DataContext;
using (var stream = (await file.StorageItemPlatformService.GetThumbnailAsync(Toolkit.Services.MicrosoftGraph.MicrosoftGraphEnums.ThumbnailSize.Large)) as IRandomAccessStream)
{
    await OneDriveSampleHelpers.DisplayThumbnail(stream, "thumbnail");
}

关于OneDrive的API操作基本都在这了。

如果你觉得微软的OneDrive客户端非常渣渣,那么看完这个,你也完全可以写一个OneDrive 的App,然后发布到商店。

到时别忘记@我一下,我也用用。

原文地址:https://www.cnblogs.com/hupo376787/p/9231842.html

时间: 2024-10-11 04:52:11

UWP 使用Windows Community Toolkit 的OneDrive service上传下载文件的相关文章

用SecureCRT在windows和CentOS间上传下载文件

安装lrzsz: # yum -y install lrzsz 现在就可以正常使用rz.sz命令上传.下载数据了 配置SecureCRT的session选项的SFTP标签页和X/Y/Zmodem中的目录,就可以了 rz是上传到linux,sz是从linux下载到windows.

windows与windows之间上传下载文件的命令

1.下载 可以从http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html下载pscp,并将其放入windows的system32 文件夹下,这样在dos命令窗口中就能直接调用使用了. 2.使用 进入cmd命令窗口 从windows上传文件到linux:pscp(空格)文件在windows上的地址(空格)服务器用户名@服务器ip:上传到服务器的地址 例: 说明:windows下的ChromeSetup.exe文件上传到了ruib

由windows向linux上传下载文件方法

1.scp方式 如果可能的话使用scp  比如win端已经安装了Gow等, scp [email protected]:/home/god/LICENCE C:/  下载文件夹加上 -r 2.pscp方式 在putty安装目录下,存在可执行文件pscp.exe,用法跟scp命令相似, win+R 输入 cmd进入命令行, 比如要将本地的LICENCE文件上传到远程计算机192.168.1.105的home/god中,远程主机登陆账号为god,命令如下: pscp   LICENCE    [em

在windows中使用xshell上传下载文件到linux中

使用centos的文件上传下载小工具,可以快速的帮助我们从本地上传文件至服务器,或者是从服务器下载文件至本地. 工具/原料 Centos xshell 方法/步骤 首先使用xshell 连接上服务器.新建一个连接,分别输入用户名和密码,再输入主机IP地址及端口号,选择ssh连接方式. 在连接属性中指定接收文件的文件夹 配置好连接属性之后连接上服务器 文件上传命令为rz,下载命令为sz,但是Linux可能没有安装该上传工具,所以输入rz和sz的时候会提示找不到该命令.所以需要需要使用命令安装下该工

windows下ftp上传下载和一些常用命令

先假设一个ftp地址 用户名 密码 FTP Server: home4u.at.china.com User: yepanghuang Password: abc123 打开windows的开始菜单,执行“运行”命令,在对话框中输入ftp,按下“确定”按钮将会切换至DOS窗口,出现命令提示符 ftp>键入命令连接FTP服务器: ftp> open home4u.at.china.com (回车) 稍等片刻,屏幕提示连接成功: ftp> connected to home4u.china.

Win Form + ASP.NET Web Service 文件上传下载--HYAppFrame

本章节主要讲解HYAppFrame服务器端如何ASP.NET Web Service实现文件(含大文件)上传,WinForm客户端如何下载文件. 1    服务器端文件上传 1.1 上传文件 函数FileUpload(stringfileFullPath, byte[] file)用于上传文件,生成文件前检查文件路径所在文件夹是否存在,不存在则首先创建文件夹. [WebMethod(EnableSession = true,Description = "上传文件")] public i

在Windows 2008 R2 Server中,上传视频遇到的问题

在Windows 2008 R2 Server中,上传视频不能播放,以及服务器大小限制问题,这里记录我的解决方法,以免再次遇到,无所适从. 1.上传视频不能播放 打开IIS,找到"MIME类型",如下: 双击"MIME类型",在右上角,点击"添加",如下: 点击确定,如下: 注:其他类型视频,一样如上添加. 2.上传大视频(这里45M),报404 在web.config文件的<system.web>节点中添加<httpRunti

web service上传参数代码实例

web service上传参数代码实例 这次做的项目用到webservice比较多,最开始在网上看的参考dome,发现都不行,后来发现安卓4.0以后有很大的不同,在做传参时,有些东西需要注意: 第一,命名空间:与服务器一致,命名空间后缀千万不要加“/”: 第二,方法名:与服务器一致: 第三,url:就是服务器地址不加后面的?=...: 代码如下: package com.example.web; import java.util.ArrayList; import org.ksoap2.Soap

Windows环境下IOS APP打包上传AppStore详细流程

现在很多伙伴跨平台开发应用,有些童鞋没有准备苹果机,本文将介绍,如何在Windows系统环境下直接上架APP,不用去搞虚拟机,搞黑苹果等等了,Windows下照样轻轻松松上架iOS APP,没Mac的小伙伴有福了. 下面从七个步骤进行详细介绍! 1.创建唯一标示符App IDs 2.申请发布证书 3.申请发布描述文件 4.iTunes Connect创建App并填写信息 5.选择证书编译打包6.Windows下上传IPA到App Store 7.上传好IPA回到iTunes Connect提交审