0

CloudBlockBlob を使用して Azure Storage に写真をアップロードするのに問題があります

    //module level variables
    CameraCaptureTask cameraCaptureTask;
    Stream _media;

    // Constructor
    public MainPage()
    {
        InitializeComponent();

        cameraCaptureTask = new CameraCaptureTask();
        cameraCaptureTask.Completed += new EventHandler<PhotoResult>(cameraCaptureTask_Completed);
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        cameraCaptureTask.Show();
    }

    private async void cameraCaptureTask_Completed(object sender, PhotoResult e)
    {
        _media = e.ChosenPhoto;

        ShowPhotoOnScreen();
        var todoItem = CreateToDo(e);
        await UploadFileToAzureStorage(todoItem);
    }

    //Works good till here. It will go off and never come back.
    private async Task UploadFileToAzureStorage(TodoItem todoItem)
    {

            Stream _media ;

            // Upload the new image as a BLOB from the stream.
            CloudBlockBlob blobFromSASCredential = container.GetBlockBlobReference(todoItem.ResourceName);
            _photoCache.Position = 0;
            await blobFromSASCredential.UploadFromStreamAsync(_media );
    }

これは非同期に開始され、戻ることはありません。ストリームで何か間違ったことをしているような気がします。

私の質問:

  1. ストリームをどのように処理すればよいですか?
  2. UploadFromStreamAsync に完了イベントが表示されません。OnCompleted をキャプチャする賢い方法や、使用すべき別の方法はありますか?

同様のコードが Azure Storage チュートリアルにあり、Win8 でうまく機能します: http://www.windowsazure.com/en-us/develop/mobile/tutorials/upload-images-to-storage-dotnet/

            StorageFile _media = null;

            // Get the new image as a stream.
            using (var fileStream = await _media.OpenStreamForReadAsync())
            {
               ...

                // Upload the new image as a BLOB from the stream.
                CloudBlockBlob blobFromSASCredential = container.GetBlockBlobReference(todoItem.ResourceName);
                await blobFromSASCredential.UploadFromStreamAsync(fileStream.AsInputStream());
            }

Win8 と WP8 の例の主な違いは次のとおりです。

  1. 写真は WP8 の StorageFile (Win8) とストリームでキャプチャされます。
  2. AsInputStream は WP8 では有効ではないようです

さらに情報が必要な場合はお知らせください。ありがとう。

4

0 に答える 0