gpt4 book ai didi

c# - 为什么我无法将 sqlite 文件上传到 OneDrive?

转载 作者:太空宇宙 更新时间:2023-11-03 13:21:28 25 4
gpt4 key购买 nike

我正在开发 Windows 运行时通用应用程序。

我需要将我在应用程序中使用的数据库上传到用户的 OneDrive 吗?

但是发生FileNotFound 异常。但我知道路径是正确的。

由于我引用了 sqlite 文件,它显示了异常。如果我引用 txt 文件,上传过程会很顺利。

var authClient = new LiveAuthClient();
var authResult = await authClient.LoginAsync(new string[] { "wl.skydrive", "wl.skydrive_update" });
if (authResult.Session != null)
{
var liveConnectClient = new LiveConnectClient(authResult.Session);
var FileToUpload = await ApplicationData.Current.LocalFolder.GetFileAsync("text.sqlite");//exception occurs here
var FileToUpload = await ApplicationData.Current.LocalFolder.GetFileAsync("text.txt");//no exception for txt files

var folderData = new Dictionary<string, object>();
folderData.Add("name", "Folder")
LiveOperationResult operationResult = await liveConnectClient.PostAsync("me/skydrive", folderData);

LiveUploadOperation uploadOperation = await liveConnectClient.CreateBackgroundUploadAsync(folderId, "filename", FileToUpload, OverwriteOption.Overwrite);
LiveOperationResult uploadResult = await uploadOperation.StartAsync();
HandleUploadResult(uploadResult);
}

最佳答案

首先,您应该使用后台传输任务来移动这么大的文件,并处理用户在传输过程中接到电话的情况。后台任务是关键。

http://code.msdn.microsoft.com/windowsapps/Background-Transfer-Sample-d7833f61/sourcecode?fileId=52027&pathId=1495533284

有点像这样。

BackgroundUploader uploader = new BackgroundUploader(); 
UploadOperation upload = uploader.CreateUpload(uri, file);
await HandleUploadAsync(upload, true);

但在您这样做之前,您需要假设用户将操纵数据库。因此,您应该在开始上传之前复制数据库文件。再次,代码:

var sourceFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
var sourceFile = await sourceFolder.CreateFileAsync("database",
Windows.Storage.CreationCollisionOption.OpenIfExists);
var targetFolder = await sourceFolder.CreateFolderAsync("~",
Windows.Storage.CreationCollisionOption.OpenIfExists);
var targetFile = await targetFolder.CreateFileAsync(sourceFile.Name,
Windows.Storage.CreationCollisionOption.ReplaceExisting);
await sourceFile.MoveAndReplaceAsync(targetFile);

这不仅是个好主意,而且我觉得它会解决您遇到的问题。请记住,您始终可以查询并询问转账是否完成(您是否没有进行两次转账)。

祝你好运!

关于c# - 为什么我无法将 sqlite 文件上传到 OneDrive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24009481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com