2012-03-28 9 views
1

Ich möchte eine Silverlight 4 (oder 5) -Anwendung erstellen, die Dateien aus dem Hosting-Web-Server herunterladen kann. Auf dem Client wird dem Benutzer eine Liste von Dateien präsentiert, aus denen er einen oder mehrere von ihnen zum Herunterladen auswählt. Von diesem Punkt an versuche ich herauszufinden, wie das funktionieren wird. Ich möchte vermeiden Aufforderung den Benutzer mehrmals (z. B. einmal für jede Datei). Es sollte nur eine einzige "Speichern als" Eingabeaufforderung geben, und von dort sollte der Download ausgeführt werden.Silverlight dynamische Bulk-Datei Download-Anwendung

Hier sind meine ersten Gedanken:

(1) in Datei speichern Client-

Wenn es einen Weg der Benutzer ein „Drop-Ordner“ wählen könnten, wo die Dateien heruntergeladen werden würde, sie zu schreiben auf die Festplatte möglicherweise nicht zu schwierig. Mir ist jedoch keine Möglichkeit bekannt, dies in Silverlight zu tun. Isolierte Speicherung war das erste, was mir in den Sinn kam, aber es wird nicht einfach für den Benutzer sein, zu diesem Ort zu kommen, sobald die Dateien geschrieben wurden ... Soweit ich weiß, gibt es nur den SaveFileDialog, und ich sicherlich Ich möchte den Benutzer nicht nach dem Speicherort und dem Namen jeder Datei fragen.

(2) Laden Sie Datei vom Server

Wenn wir irgendwie den Browser eingebaut nutzen können (save/open) Download-Funktionen, wäre dies eine einfache Option. Ich habe ein paar grundlegende Artikel gefunden, die zeigen, wie das geht, aber ich denke, unser Szenario wird kompliziert, weil es mehrere Dateien gibt und die Dateien, die der Benutzer in einem Batch zum Herunterladen auswählt, dynamisch sind. Meiner Meinung nach denke ich daran, eine Art "on the fly" Zip/Archiv zu erstellen, das die Dateien enthält, die der Benutzer zum Herunterladen auswählt, und dann die Zip als einzelne Datei herunterlädt.

Irgendwelche Gedanken oder Vorschläge, wie so etwas umgesetzt werden könnte? Ich bin mir sicher, dass es möglich ist, aber es ist nur Neuland für mich.

Danke!

Antwort

1

Nun, wie Sie die meiste Forschung getan haben. Silverlight muss (SaveDialog) immer dann auffordern, wenn Sie Daten auf den Client-Rechner herunterladen möchten, da Silverlight-Anwendungen in einer Sandbox ausgeführt werden. Dies bedeutet, dass Sie ohne eine Dialogeingabe auf keine lokalen Dateien und Ordner zugreifen können.

ich denke, die Lösung passt am besten, wo Sie die Datei in Silverlight herunterladen, versuchen, sie alle im Speicher haben dann SharpZipLib für Silverlight verwenden und versuchen, die Dateien im laufenden Betrieb zu komprimieren.

http://liviutrifoi.wordpress.com/2011/03/22/silverlight-create-zip-file-with-folder/

Grüße.

+0

Perfekt! SharpZipLib erlaubte mir, eine einzige Zip-Datei zu erstellen, die die vom Benutzer angegebenen Dateien enthielt. Ich konvertierte den Zip-Stream in ein Byte-Array zum Speichern auf dem Client. Danke für die Antwort. –