Fileupload in web-Verzeichnis

07/03/2008 - 09:07 von Patrick Finger | Report spam
Hallo Group

Der Benutzer der Applikation soll Fotos, Videos und Audiodateien
hochladen können. Diese müssen danach vom Web her erreichbar sein.

Quick and Dirty: Verzeichnis "uploaded" im Applikationsverzeichnis.

Lokal kein Problem - auf dem Server hingegen startet der Upload nicht
und ich erhalte auch keine Fehlermeldung. Gemàss Artikeln in Google hab
ich dann dem ASP-Benutzer und Netzwerkdienst Schreibrechte auf das
Verzeichnis gegeben - ohne Erfolg.
Hab ich noch was vergessen?


Für spàter möchte ich das upload-Verzeichnis natürlich nicht mehr
unterhalb vom Applikationsverzeichnis.
Ich erstelle also ein für die Applikation schreibbares Verzeichnis
Verzeichnis auf dem Server zb c:/uploaded
Wie erreicht man die Dateien darin nun via Web (zB via Hyperlink) ?
Wàre URL-Rewriting angebracht oder bringt das nix wenn die Zieldateien
nicht in einem Web-Verzeichnis liegen?

Vielen Dank und Gruss
 

Lesen sie die antworten

#1 Samaschke, Karsten
07/03/2008 - 09:21 | Warnen spam
Patrick Finger schrieb:

Lokal kein Problem - auf dem Server hingegen startet der Upload nicht
und ich erhalte auch keine Fehlermeldung. Gemàss Artikeln in Google hab
ich dann dem ASP-Benutzer und Netzwerkdienst Schreibrechte auf das
Verzeichnis gegeben - ohne Erfolg.
Hab ich noch was vergessen?



System?

Für spàter möchte ich das upload-Verzeichnis natürlich nicht mehr
unterhalb vom Applikationsverzeichnis.



Brav!

Ich erstelle also ein für die Applikation schreibbares Verzeichnis
Verzeichnis auf dem Server zb c:/uploaded



Genau.

Wie erreicht man die Dateien darin nun via Web (zB via Hyperlink) ?



Überhaupt nicht. Sonst wàre die Aktion ja auch ziemlich bescheuert und
Du würdest kein extern liegendes Verzeichnis benötigen.

Wàre URL-Rewriting angebracht oder bringt das nix wenn die Zieldateien
nicht in einem Web-Verzeichnis liegen?



Nö, bringt überhaupt nichts. Denn wenn der Kram nicht vom Web aus
erreichbar ist, dann kannst Du per URL-Rewriting ackern wie Du willst -
es ist halt nicht vom Web erreichbar.

Am Einfachsten schreibst Du dir nen HTTP-Handler, der die Daten làdt.
Das Laden der Daten geschieht, indem der Benutzer einen Link zum Handler
anklickt:

<a href="Handler.ashx?file=bla.pdf">Download!</a>

Innerhalb des Handlers greifst Du auf den übergebenen Parameter zu:

String file = HttpContext.Current.Request["file"];

Aus Sicherheitsgründen wirst Du bitte noch überprüfen, ob da nicht
irgend jemand einen Pfad mit versteckt hat:

// So...
file = File.GetFileName(file);

Jetzt bastelst Du dir den richtigen Pfad zusammen (der Name des
Upload-Verzeichnisses kommt natürlich aus der Konfiguration, wir wollen
den Kram ja nicht fest verdrahten):

String path = Path.Combine("c:\\uploaded", file);

Und den Inhalt làsst Du dann gemütlich per Response.WriteFile ausgeben:

HttpContext.Current.Response.WriteFile(path);

Damit bist Du durch. Ach ja, File und Path befinden sich im Namensraum
System.IO.

Mit freundlichen Gruessen / Best regards,

Karsten Samaschke
IT-Development, IT-Consulting, IT-Training
Communitites: www.aspxperts.de | www.aspnetzone.de
Homepage: http://www.ksamaschke.de
Blog: http://www.karsan.de

Sent via MacBook / Windows Server 2008

Ähnliche fragen