Autor Beitrag
Kasko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

Win 10
C# C++ (VS 2017/19), (Java, PHP)
BeitragVerfasst: Mi 31.07.19 22:05 
Mir ist bereits bekannt wie ich eine Datei, unter der Nutzung einer Blob-Url, herunterladen kann. Das Problem ist das die Download-Methode nicht so einfach/sicher abbrechbar/pausierbar ist. Daher möchte ich einen Stream zu der Datei auslesen um dann die Datei mit einer abbrechbaren, pausierbaren eigenen Download-Methode zu speichern. Das Problem ist jetzt aber, dass die einzigen Möglichkeiten an einen Stream heranzukommen die DownloadStream-Methoden der Klasse CloudBlockBlob sind. Allerdings wird ja auch da schon die gesamten Datei heruntergeladen, jedoch nicht in eine normale Datei, sondern halt in einen Stream. Ich bräuchte allerdings eine Art NetworkStream, wo der Inhalt der Datei nicht vorher komplett in den Stream heruntergeladen wird.

Gibt es eine Möglichkeit um so einen Stream zu erhalten?

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4231
Erhaltene Danke: 892

Win10
C#, C++ (VS 2015/17)
BeitragVerfasst: Do 01.08.19 09:02 
Redest du von dieser Azure-Klasse: CloudBlockBlob?
Könntest du nicht eine der Methoden DownloadRangeToStreamAsync (oder DownloadRangeToByteArrayAsync) benutzen, um die Datei in Teilen (Chunks) herunterzuladen? Mittels des CancellationTokens ist die asynchrone Task ja auch abbrechbar.
Evtl. hilft dir das Code-Beispiel unter CloudBlockBlob.DownloadToStream vs DownloadRangeToStream dabei (statt parallel dann sequentiell die Teile verarbeiten)?

Edit: Du kannst aber auch eine eigene von Stream (s. "Hinweise für Vererber") abgeleitete Klasse erstellen und die Methode Read(Byte[], Int32, Int32) passend überschreiben.