2017-05-21 15 views
0

私は過去数日間Azureブロブストレージを試して、UWPアプリケーション用のクラウドデータベースを試してみました。ブロブストレージに移動した後にファイルの内容が書き換えられる

私はAzureストレージにファイルをアップロードする機能を持っていましたが、ファイルの内容は私が迷惑メールと呼ぶものに置き換えられましたが、私は間違ったことをしていると確信しています。

アップロードしようとしているファイルは、情報の行が文字で区切られた単純な.txtファイルです。

.txtファイルの内容は、次のようにフォーマットする必要があります。

:SKU|:brand|:brand |:Train smarter and go farther with the brand, a product designed to help you reach your peak performance.|:249.95|:|:|:|:|:|:|:https://link.com| 

:SKU|:brand|:brand Bluetooth Speaker |:Get up to 87 hours of great-sounding wireless music with the brand Bluetooth Speaker .|:269.00|:|:|:|:|:|:|:https://link.com| 

:SKU|:brand|:brand Docking Station - USB 3.0 |:This USB 3.0 brand docking station connects up to three additional monitors, external devices, and the Internet .|:169.99|:|:|:|:|:|:|:https://link.com| 

しかし、私のBLOBストレージにアップロードされた後の内容は次のようになります。

:SKU|:|:-//W3C//DTD XHTML 1.0 Strict//EN|://DTD XHTML 1.0 Strict//EN|:/W3C//DTD XHTML 1.0 Strict//EN|:|:|:|:|:|:|:-//W3C//DTD XHTML 1.0 Strict//EN| 

:SKU|:|:-//W3C//DTD XHTML 1.0 Strict//EN|://DTD XHTML 1.0 Strict//EN|:/W3C//DTD XHTML 1.0 Strict//EN|:|:|:|:|:|:|:-//W3C//DTD XHTML 1.0 Strict//EN| 

:SKU|:|:-//W3C//DTD XHTML 1.0 Strict//EN|://DTD XHTML 1.0 Strict//EN|:/W3C//DTD XHTML 1.0 Strict//EN|:|:|:|:|:|:|:-//W3C//DTD XHTML 1.0 Strict//EN| 

:SKU|:|:-//W3C//DTD XHTML 1.0 Strict//EN|://DTD XHTML 1.0 Strict//EN|:/W3C//DTD XHTML 1.0 Strict//EN|:|:|:|:|:|:|:-//W3C//DTD XHTML 1.0 Strict//EN| 

:SKU|:|:-//W3C//DTD XHTML 1.0 Strict//EN|://DTD XHTML 1.0 Strict//EN|:/W3C//DTD XHTML 1.0 Strict//EN|:|:|:|:|:|:|:-//W3C//DTD XHTML 1.0 Strict//EN| 

:SKU|:brand|:brand 1TB Hard Drive for Laptops|:Upgrade your laptop to a 1 TB of storage with a high quality, reliable brand hard drive.|:68.85|:|:|:|:|:|:|:https://link.com| 

私の最初のブロブストレージ実験ファイル自体を直接アップロードすることになりましたが、これと同じ問題が発生しましたので、私がやろうとしていたことでうまくいかないと思って別の方法(ストリーム読み書き)を試みました。今私はストリームメソッドを使用しています(誰も他の勧告を持っていなければそれに固執するでしょう)が、これの一部に接続されたクラウドに新しいので(一般的なUWP)、私は何が間違っているのか分かりません。ここで

は、私は私のBLOBストレージにアップロードするために使用しているコードです:次のようにあなたのDatabaseHelperに基づいて

public class DatabaseHelper 
{ 
    CloudBlockBlob blobb; 

    public DatabaseHelper() 
    { 

     StorageCredentials credentials = new StorageCredentials("nameommited", "key ommitted"); 
     CloudStorageAccount storageAccount = new CloudStorageAccount(credentials, true); 
     var blobClient = storageAccount.CreateCloudBlobClient(); 
     var container = blobClient.GetContainerReference("testcontainer"); 
     container.CreateIfNotExistsAsync(); 

     CloudBlockBlob blob = container.GetBlockBlobReference("testfile.txt"); 
     blob.DeleteIfExistsAsync(); 
     blobb = blob; 
    } 

    public async void UploadFile(StorageFile fileToUpload) 
    { 

     var fileStream = await fileToUpload.OpenAsync(FileAccessMode.Read); 
     ulong size = fileStream.Size; 

     // Get a data stream from somewhere. 
     Stream inputStream = fileStream.AsStream(); ; 
     await blobb.UploadFromStreamAsync(inputStream); 

    } 
} 

答えて

2

、私はこの問題をテストするために私のアプリを構築しました:ここ

private async void btnUploadFile_Click(object sender, RoutedEventArgs e) 
{ 
    var picker = new Windows.Storage.Pickers.FileOpenPicker(); 
    picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail; 
    picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop; 
    picker.FileTypeFilter.Add(".txt"); 

    Windows.Storage.StorageFile file = await picker.PickSingleFileAsync(); 
    if (file != null) 
    { 
     var fileHelper = new DatabaseHelper(); 
     await fileHelper.UploadFile(file); 
    } 
} 

tesingのための私のtxtファイルです、test.txtを参照することができます。私はあなたがあなたのDatabaseHelperコンストラクタで非同期メソッドを呼び出したことに気づいた

enter image description here

その結果、私はあなたのコンテナが存在していない場合は、いくつかのリスクがあることを想定しました。さらに、この問題を特定するために、Microsoft Azure Storage Explorerを使用して、空白のBLOBに直接txtファイルをアップロードすることもできます。また、operate Azure blob storage in UWP appsについてのサンプルがあります。それを参照することもできます。

+0

私のコードを見ていただきありがとうございます。私はファイルピッカーを使ってファイルを収集していなかったので、今はそれが何かをするかもしれないと思っています。 – Lacju

関連する問題