/// <summary>
        ///     Uploads a copy of the current database to onedrive
        /// </summary>
        /// <returns>State if the task succeed successfully</returns>
        public async Task <TaskCompletionType> Upload()
        {
            if (_liveClient == null)
            {
                await Login();
            }

            await GetBackupFolder();

            if (string.IsNullOrEmpty(_folderId))
            {
                return(TaskCompletionType.Unsuccessful);
            }

            try {
                var localFolder = ApplicationData.Current.LocalFolder;
                var storageFile = await localFolder.GetFileAsync(DB_NAME);

                var uploadOperation = await _liveClient.CreateBackgroundUploadAsync(
                    _folderId, BACKUP_NAME, storageFile, OverwriteOption.Overwrite);

                var uploadResult = await uploadOperation.StartAsync();

                return(TaskCompletionType.Successful);
            }
            catch (TaskCanceledException ex) {
                InsightHelper.Report(ex);
                return(TaskCompletionType.Aborted);
            }
            catch (Exception ex) {
                InsightHelper.Report(ex);
                return(TaskCompletionType.Unsuccessful);
            }
        }
Beispiel #2
0
        private async void uploadButton_Click(object sender, RoutedEventArgs e)//上传
        {
            try
            {
                msgText.Text = "亲:正在上传";
                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);

                    StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(fileName);

                    //String fileText = await FileIO.ReadTextAsync(file);

                    LiveUploadOperation uploadOperation = await liveConnectClient.CreateBackgroundUploadAsync(
                        "me/skydrive", file.Name, file, OverwriteOption.Overwrite);

                    LiveOperationResult uploadResult = await uploadOperation.StartAsync();

                    if (uploadResult.Result != null)
                    {
                        msgText.Text = "恭喜:您已成功同步记事至OneDrive!";
                    }
                }
            }
            catch (LiveAuthException ex)
            {
                msgText.Text = ex.Message;
            }
            catch (LiveConnectException ex)
            {
                msgText.Text = ex.Message;
            }
        }
        private async void RunButton_Click(object sender, RoutedEventArgs e)
        {
            string message = null;

            try
            {
                // Ensure that the user has consented the wl.skydrive and wl.skydrive_update scopes
                var authClient = new LiveAuthClient();
                var authResult = await authClient.LoginAsync(new string[] { "wl.skydrive", "wl.skydrive_update" });

                if (authResult.Session == null)
                {
                    throw new InvalidOperationException("You need to sign in and give consent to the app.");
                }

                var liveConnectClient = new LiveConnectClient(authResult.Session);
                // Validate parameters
                var imageSourceUrl = imgSourceUrlTextBox.Text;
                if (string.IsNullOrWhiteSpace(imageSourceUrl))
                {
                    throw new InvalidOperationException("Image Url is empty.");
                }

                var uploadPath = uploadPathTextBox.Text;
                if (string.IsNullOrWhiteSpace(uploadPath))
                {
                    throw new InvalidOperationException("Upload location is empty.");
                }

                // Download the image from the Internet
                var networkFileDownloader = new BackgroundDownloader();
                DownloadOperation networkFileDownloadOperation = networkFileDownloader.CreateDownload(new Uri(imageSourceUrl), null);
                await networkFileDownloadOperation.StartAsync();

                IInputStream uploadInputStream = networkFileDownloadOperation.GetResultStreamAt(0);


                // Upload to OneDrive
                LiveUploadOperation uploadOperation = await liveConnectClient.CreateBackgroundUploadAsync(uploadPath, "ImageFromInternet.jpg", uploadInputStream, OverwriteOption.Rename);

                LiveOperationResult uploadResult = await uploadOperation.StartAsync();

                dynamic uploadedResource     = uploadResult.Result;
                string  uploadedResourceId   = uploadedResource.id;
                string  uploadedResourceName = uploadedResource.name;
                string  uploadedResourceLink = uploadedResource.source;
                uploadedResourceTextBox.Text = string.Format("{0}\r\n{1}\r\n{2}", uploadedResourceId, uploadedResourceName, uploadedResourceLink);

                // Download from the OneDrive
                LiveDownloadOperation downloadOperation = await liveConnectClient.CreateBackgroundDownloadAsync(uploadedResourceId + "/content");

                LiveDownloadOperationResult downloadResult = await downloadOperation.StartAsync();

                if (downloadResult != null && downloadResult.Stream != null)
                {
                    using (IRandomAccessStream ras = await downloadResult.GetRandomAccessStreamAsync())
                    {
                        BitmapImage imgSource = new BitmapImage();
                        imgSource.SetSource(ras);
                        skydriveImage.Source = imgSource;
                    }
                }
            }
            catch (Exception ex)
            {
                message = "Operation failed: " + ex.Message;
            }

            if (message != null)
            {
                var dialog = new Windows.UI.Popups.MessageDialog(message);
                await dialog.ShowAsync();
            }
        }