public async Task<Boolean> UpLoadToLive(String thisPath, StorageFile thisFile) { try { LiveConnectClient uploadClient = new LiveConnectClient(meClient.Session); LiveOperationResult result = await uploadClient.GetAsync("/me/skydrive/files"); dynamic files = result.Result; List<object> data = (List<object>)files.data; foreach (dynamic item in data) { if (item.name == thisPath) { try { LiveOperationResult uploadResult = await uploadClient.BackgroundUploadAsync(item.id, thisFile.Name, thisFile, OverwriteOption.Overwrite); return true; } catch (NullReferenceException) { return false; } catch (FileNotFoundException) { return false; } catch (ArgumentOutOfRangeException) { return false; } } } } catch (NullReferenceException) { } catch (LiveConnectException) { } return false; }
private async Task UploadFileToSkydrive(StorageFile file, string eventBuddyFolderId, LiveConnectClient client) { using (var stream = await file.OpenStreamForReadAsync()) { var progressHandler = InitializeProgressBar(); var hasErrors = false; do { try { hasErrors = false; this.retrySelected = false; LiveOperationResult result = await client.BackgroundUploadAsync(eventBuddyFolderId, file.Name, stream.AsInputStream(), OverwriteOption.Overwrite, cancellationToken.Token, progressHandler); this.FileNameTextBlock.Text = file.Name; await UpdateSession(client, result); } catch (LiveConnectException) { hasErrors = true; } if (hasErrors) { var errorTitle = "Upload file error"; await ShowMessage(errorTitle, "Exception occured while trying to upload the " + file.Name + " file to Skydrive."); } uploadProgress.Visibility = Windows.UI.Xaml.Visibility.Collapsed; } while(this.retrySelected); } }
public static async Task<SkyDriveFolderInfo> UploadFile( StorageFile sourceFile, string skyDriveFileName, string skyDriveParentFolder) { try { if (sourceFile != null) { if (session == null) { await Login(); } var liveClient = new LiveConnectClient(session); LiveOperationResult operationResult = await liveClient.BackgroundUploadAsync( skyDriveParentFolder, skyDriveFileName, sourceFile, OverwriteOption.Overwrite); dynamic result = operationResult.Result; return new SkyDriveFolderInfo(result); } return null; } catch (LiveConnectException exception) { throw new Exception("Unable to upload file to " + skyDriveFileName, exception); } }
private async void btnUploadFile_Click(object sender, RoutedEventArgs e) { // 既にセッションを取得済みであることが前提 var client = new LiveConnectClient(Session); // SkyDrive上のアルバム一覧を取得 var result1 = await client.GetAsync("me/skydrive/files?filter=albums"); var folders = (List<dynamic>)result1.Result["data"]; // PicturesフォルダーのIDをフォルダー取得する var picturesFolder = folders.Single(item => item.name == "Pictures"); var folderID = picturesFolder.id; // SkyDriveにアップロードするファイルの名前を指定する var fileName = "test.png"; // SkyDriveへ写真を非同期でバックグランドアップロードする var uri = new Uri("ms-appx:///Assets/SmallLogo.png"); var file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri); var result2 = await client.BackgroundUploadAsync(folderID, fileName, file, OverwriteOption.Overwrite); // 成功すればアップロードしたファイルの情報が取得できる var source = (string)result2.Result.source; System.Diagnostics.Debug.WriteLine("source:{0}", source); }
void task_Completed(object sender, PhotoResult e) { if (e.ChosenPhoto == null) { return; } string uploadLocation = "/shared/transfers/Image" + DateTime.Now.Millisecond + ".jpg"; BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += (o, args) => { using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication()) { using (IsolatedStorageFileStream stream = store.CreateFile(uploadLocation)) { byte[] buffer = new byte[1 << 10]; int bytesRead; while ((bytesRead = e.ChosenPhoto.Read(buffer, 0, buffer.Length)) > 0) { stream.Write(buffer, 0, bytesRead); } } } }; worker.RunWorkerCompleted += (o, args) => { LiveConnectClient uploadClient = new LiveConnectClient(App.Session); uploadClient.BackgroundUploadCompleted += new EventHandler<LiveOperationCompletedEventArgs>(uploadClient_BackgroundUploadCompleted); string userState = "myUserState"; // arbitrary string to identify the request. uploadClient.BackgroundUploadAsync(SelectedAlbum.ID, new Uri(uploadLocation, UriKind.RelativeOrAbsolute), OverwriteOption.Overwrite, userState); }; worker.RunWorkerAsync(); }