2017-05-21 1 views
0

Ich habe die letzten Tage damit verbracht, mit Azure Blob Storage zu experimentieren, um eine Cloud-Datenbank für meine UWP-App zu erstellen.Dateiinhalte werden nach dem Verschieben in den BLOB-Speicher neu geschrieben

Ich habe es geschafft, die Funktionalität des Hochladens von Dateien in den Azure-Speicher zu bekommen, aber der Inhalt der Datei wird durch etwas ersetzt, was ich Junk nennen möchte, aber es gibt ein Muster, das sicher anzeigt, dass ich etwas falsch mache.

Die Dateien, die ich hochladen möchte, sind einfache .TXT-Dateien mit durch Zeichen getrennten Zeilen.

Der Inhalt der txt-Datei sollte wie folgt formatiert werden:

: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| 

Aber nachdem der Inhalt so aussehen meiner Blob Speicher hochgeladen werden:

Lagerversuche
: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| 

Mein erster blob ging über das Hochladen der Datei selbst direkt, aber das führte zu dem gleichen Problem, so dass ich versuchte eine andere Methode (Stream lesen/schreiben) denken, dass man einfach nicht funktioniert für das, was ich versuchte zu tun. Im Moment benutze ich die Stream-Methode (und bleibe dabei, es sei denn, jemand hat andere Empfehlungen), aber so neu in der Cloud verbundenen Teil davon (und UWP im Allgemeinen) Ich weiß nicht, was ich falsch machen könnte.

Hier ist der Code ich meinen Blob Speicher laden bin mit:

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); 

    } 
} 

Antwort

2

auf DatabaseHelper Basierend baute ich meine App dieses Problem zu testen, wie folgt:

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); 
    } 
} 

Hier Ist meine TXT-Datei zum Testen, können Sie sich auf test.txt beziehen.

RESULT

enter image description here

ich bemerkt, dass Sie Asynchron-Methode in Ihrem DatabaseHelper Konstruktor aufgerufen, ging ich davon aus, dass es ein gewisses Risiko, wenn Ihr Behälter nicht gegeben ist. Zusätzlich können Sie Microsoft Azure Storage Explorer verwenden, um Ihre TXT-Datei direkt in den azure-Blob hochzuladen, um dieses Problem zu isolieren. Außerdem gibt es ein Beispiel über operate Azure blob storage in UWP apps, auf das Sie sich beziehen könnten.

+0

Vielen Dank, dass Sie sich meinen Code angesehen haben. Ich habe den Dateiwähler nicht benutzt, um die Datei zu sammeln, also denke ich, dass das jetzt etwas damit zu tun haben könnte. – Lacju

Verwandte Themen