none
Downloadlinks dynamisch erzeugen und durch IIS auswerten lassen RRS feed

  • Frage

  • Hallo Zusammen!

    Ich hoffe mal ich bin mit meinem Anliegen hier im richtigen Forum gelandet. Es geht um Folgendes:

    Ich möchte ein kleines Webprojekt entwickeln, welches PDF-Dateien zum Download bereitstellt und der Link zu den Dateien beim Bereitstellen dynamisch erzeugt wird.

    Der Link soll dann in etwa das Format www.domain.tld/sub/abcdefgxyz012345 haben (Auf die Länge bin ich nicht festgelegt).

    Es soll also nicht direkt die PDF verlinkt werden, sondern über ein Token, die dazugehörige Datei ermittelt und bereitgestellt werden.

    Dieses Token soll im Besten Fall eine Art Prüfsumme besitzen, damit der String nicht einfach erraten werden kann.

    Eine GUI ist eigentlich nicht notwendig, maximal ein Interface wo man die Dateien hochlädt und den dazu gehörigen generierten Link angezeigt bekommt.

    Kennt vielleicht jemand irgendwelche Bibliotheken, die meine Zwecke erfüllen? Und wäre hier MVC4 das Framework der Wahl? Und wie konfiguriert man IIS7 dass es diese dynamischen Links korrekt auswertet und die entsprechende Datei zurückgibt?

    Fragen über Fragen... ;)

    Ich hoffe die Beschreibung ist jetzt nicht zu wirr und fände es nett, wenn mir jemand ein paar Einstiegspunkte weisen könnte.

    • Bearbeitet rooot66 Dienstag, 7. Mai 2013 15:00 Typo korregiert
    Dienstag, 7. Mai 2013 14:56

Antworten

  • Hi,

    mit MVC3 geht es - also denk ich mal, dass es mit der neueren Version immer noch funktioniert, denn das ist Basis-Funktionalität. Und am IIS rumschrauben musst Du auch nicht.

    Du definierst Dir in global.asax ein neues Mapping für das von Dir gewünschte URL-Format, zB (bitte VOR das Default-Mapping stellen)

    routes.MapRoute(
       "Pdf",
       "pdf/{id}",
       new
       {
          controller = "Pdf",
          action = "Index",
          id = UrlParameter.Optional
       }
    );

    Damit werden alle Aufrufe www.domain.de/pdf/<ein_beliebiges_token> an den (noch zu erstellenden) PdfController weitergegeben - und zwar an dessen "Index"-Action. In dieser Methode kannst Du dann aus dem (im Parameter "id" übergebenen) Token den tatsächlichen Pdf-Dateinamen 'errechnen' und die entsprechende Pdf-Datei als Aufruf-Ergebnis zurück geben.

    public class PdfController : Controller
    {
       public ActionResult Index(string id)
       {
          // hier errechnest Du "pdfFileName"
    return File(pdfFileName, "application/pdf", "speichern_unter.pdf"); } }

    Damit bist Du fertig - abgesehen davon, dass Du das Errechnen des Pdf-Namens noch machen musst, aber das war ja nicht Deine Frage.

    Gruß
    Jürgen

    • Als Antwort vorgeschlagen twentythreee Mittwoch, 8. Mai 2013 07:56
    • Als Antwort markiert rooot66 Mittwoch, 29. Mai 2013 11:37
    Dienstag, 7. Mai 2013 18:02

Alle Antworten

  • Hi,

    mit MVC3 geht es - also denk ich mal, dass es mit der neueren Version immer noch funktioniert, denn das ist Basis-Funktionalität. Und am IIS rumschrauben musst Du auch nicht.

    Du definierst Dir in global.asax ein neues Mapping für das von Dir gewünschte URL-Format, zB (bitte VOR das Default-Mapping stellen)

    routes.MapRoute(
       "Pdf",
       "pdf/{id}",
       new
       {
          controller = "Pdf",
          action = "Index",
          id = UrlParameter.Optional
       }
    );

    Damit werden alle Aufrufe www.domain.de/pdf/<ein_beliebiges_token> an den (noch zu erstellenden) PdfController weitergegeben - und zwar an dessen "Index"-Action. In dieser Methode kannst Du dann aus dem (im Parameter "id" übergebenen) Token den tatsächlichen Pdf-Dateinamen 'errechnen' und die entsprechende Pdf-Datei als Aufruf-Ergebnis zurück geben.

    public class PdfController : Controller
    {
       public ActionResult Index(string id)
       {
          // hier errechnest Du "pdfFileName"
    return File(pdfFileName, "application/pdf", "speichern_unter.pdf"); } }

    Damit bist Du fertig - abgesehen davon, dass Du das Errechnen des Pdf-Namens noch machen musst, aber das war ja nicht Deine Frage.

    Gruß
    Jürgen

    • Als Antwort vorgeschlagen twentythreee Mittwoch, 8. Mai 2013 07:56
    • Als Antwort markiert rooot66 Mittwoch, 29. Mai 2013 11:37
    Dienstag, 7. Mai 2013 18:02
  • Vielen Dank für die schnelle Antwort. Und ja, es geht auch mit MVC4 exakt so wie von dir beschrieben.

    Hätte nicht gedacht, dass sich das so einfach realisieren lässt, aber dieses Konzept scheint ja ein grundlegendes bei MVC zu sein.

    Ich werde das Gerüst jedenfalls mal nutzen um darauf aufzubauen.

    Danke nochmal & Viele Grüße!

    Mittwoch, 29. Mai 2013 11:45