为什么我不能上传sqlite文件到OneDrive
本文关键字:文件 OneDrive sqlite 不能 为什么 | 更新日期: 2023-09-27 18:06:37
我正在开发一个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);
这不仅是个好主意,我有一种感觉,它将纠正你所遇到的问题。记住,你可以随时查询并询问是否完成了转账(如果你没有进行两次转账)。
祝你好运!