2016-09-28 1 views
1

Ich erhalte Dateiinhalte von Google Drive API v3 im Stream.Stream, um die gepufferten Daten zurück zum Browser als Download in .net

Dim Stream As New System.IO.MemoryStream()

request.Download (Strom)

Above lines herunterladen Dateiinhalt zu streamen. So weit, ist es gut.

Jetzt möchte ich diesen Stream in Datei auf Client-Browser herunterladen. Ich habe einen Beispielcode durchgelesen, und alle laden die Datei von der HTTP-Antwort herunter. Wenn ich dieses Skript verwende und meinen Stream übergebe, wird meine aspx-Datei heruntergeladen. Ich meine das Skript wird auf test.aspx geschrieben und nach dem Ausführen dieses Skripts wird die leere Datei heruntergeladen und der Name der Datei lautet test.aspx

Bitte teilen Sie eine Lösung zu meinem Problem.

Antwort

1

Für das Problem, dass es leer ist, haben Sie wahrscheinlich vergessen, den Stream zurückzuspulen; hinzufügen:

stream.Position = 0; 

bevor Sie es übergeben.

Für die Ausgabe des Namens: Sie müssen die content-disposition HTTP-Header verwenden, um einen besseren zu geben. Diese kann bereits in der request.Download Methode als optionaler Parameter verfügbar sein. Wenn nicht: Fügen Sie einfach den HTTP-Header selbst hinzu. Zum Beispiel from rfc2616

Content-Disposition: attachment; filename="fname.ext" 
+0

Danke für Ihre Antwort, stream.position = 0 funktioniert für mich, aber jetzt die Datei weiter herunterladen. Ich kann Dateigröße als 819 KB sehen, aber Download stoppt nie (test.jpg.crdownload) – Anjum

+1

@Anjum gut haben Sie die Länge des Inhalts? Im Grunde müssen Sie den http-Verkehr betrachten, um dieses –

+0

zu diagnostizieren, zZ lasse ich es leer, was sollte Inhaltlänge ?? sein? Streamlänge? – Anjum

Verwandte Themen