none
Dokumentenlink senden, damit Word geöffnet werden kann

    Frage

  • Hallo zusammen

    In einer Intranet-Anwendung gibt es für Dokumente eine Liste. Es gibt Dokumente als als Binary in der DB gespeichert sind und solche welche nur als Link(Pfad und Dokumentenname) gespeichert werden. Der Pfad ist z.B. z:\public\meinDokument.docx und liegt auf einer Dateifreigabe(bei allen Usern).

    Wenn jetzt jemand einen solchen Dokumentenlink anklickt, wird eine aspx-Seite aufgerufen und darin dann entschieden, ob der Binary-Inhalt gestreamt werden soll oder der Link übertragen werden und der Browser soll dann das Dokument nicht herunterladen sondern gleich ab z:\... öffnen, damit es danach auch gleich wieder gespeichert werden kann(und für die anderen aktuell bleibt). Der erste Fall mit dem Binary funktioniert, wie muss ich es aber machen, damit der Browser merkt, dass Word geöffnet werden soll?

    Direkt den ganzen Link z:\... im html als Link zu hinterlegen, geht nicht, das ist so vorgegeben.

    Gruss Christoph

    Montag, 14. Januar 2013 21:18

Antworten

  • Hallo Christoph,

    ich würde hierfür einen Handler (ASHX) nehmen und den dann die Datei ausliefern lassen.

    Ein Beispiel für sowas findest Du hier:

      http://www.aspnetzone.de/forums/permalink/219318/219329/ShowThread.aspx#219329

    Anhand der Angabe im "ContentType" Header weiß der Client, welches Programm er öffnen sollte (wenn der Client entsprechend eingestellt ist und überhaupt ein Programm existiert, das mit dem Dateityp etwas anfangen kann)

      Content-Disposition: attachment

    wird in der Regel dazu führen, dass der Client einen "Speichern unter..." Dialog anzeigt.

      Content-Disposition: inline

    wäre das, was Du brauchst, damit wird, wenn alles passt, das dazugehörige Programm direkt geöffnet.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Montag, 14. Januar 2013 21:28
    Moderator
  • Hallo Christoph,

    das könnte man auch über den Handler machen. In dem Fall sendet man bspw.:

      Response.Redirect( "file:///X:/Ordner/Datei.docx" )

    Das geht aber auch über die Webform selbst, wenn das einfacher für dich ist.

    Allerdings wage ich zu bezweifeln, dass das ohne Anpassung der Sicherheitseinstellungen im Browser funktioniert.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert chmav Montag, 21. Januar 2013 10:10
    Montag, 21. Januar 2013 09:56
    Moderator

Alle Antworten

  • Hallo Christoph,

    ich würde hierfür einen Handler (ASHX) nehmen und den dann die Datei ausliefern lassen.

    Ein Beispiel für sowas findest Du hier:

      http://www.aspnetzone.de/forums/permalink/219318/219329/ShowThread.aspx#219329

    Anhand der Angabe im "ContentType" Header weiß der Client, welches Programm er öffnen sollte (wenn der Client entsprechend eingestellt ist und überhaupt ein Programm existiert, das mit dem Dateityp etwas anfangen kann)

      Content-Disposition: attachment

    wird in der Regel dazu führen, dass der Client einen "Speichern unter..." Dialog anzeigt.

      Content-Disposition: inline

    wäre das, was Du brauchst, damit wird, wenn alles passt, das dazugehörige Programm direkt geöffnet.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Montag, 14. Januar 2013 21:28
    Moderator
  • Hallo Stefan

    Besten Dank, werde das mit dem inline prüfen.

    Gruss Christoph

    Donnerstag, 17. Januar 2013 10:01
  • Die Prüfung ist noch ausstehend, würde mich sonst aber nochmals melden.
    Freitag, 18. Januar 2013 22:08
  • Hallo Stefan

    So, konnte es jetzt prüfen. Ich weis nicht, ob ich das Problem verständlich erklärt habe, mit inline funktioniert es noch nicht wie erwünscht.

    Das Dokument geht zwar auf, beim Speichern stimmt dann aber der Pfad nicht.

    Ich möchte das Dokument nicht streamen sondern weil das Dokument über w:\meinVerzeichnis\meineDate.docx erreichbar ist, soll dem IE nur dieser Link übertragen werden, von da soll Word dann die Daten öffnen und beim Speichern wäre es dann automatisch im w: zum speichern.

    Das ganze läuft in einem Intranet-Bereich und es kann davon ausgegangen werden, dass das w:-Laufwerk überall gleich eingebunden ist. Wenn ich den Pfad direkt im IE in den URL-Bereich kopiere, wird Word geöffnet, so sollte es auch in diesem Fall sein. Es soll aber nicht einfach der w:\...-Link direkt in der Oberfläche stehen sondern beim Response zurückgeliefert werden.

    Gruss Christoph

    Sonntag, 20. Januar 2013 18:36
  • Hallo Christoph,

    das könnte man auch über den Handler machen. In dem Fall sendet man bspw.:

      Response.Redirect( "file:///X:/Ordner/Datei.docx" )

    Das geht aber auch über die Webform selbst, wenn das einfacher für dich ist.

    Allerdings wage ich zu bezweifeln, dass das ohne Anpassung der Sicherheitseinstellungen im Browser funktioniert.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert chmav Montag, 21. Januar 2013 10:10
    Montag, 21. Januar 2013 09:56
    Moderator
  • Hallo Stefan

    Super, so einfach ist es manchmal.

    Die User müssen die Seite eh in die vertrauenswürdigen Seiten nehmen, das ist kein Problem.

    Besten Dank

    Gruss Christoph

    Montag, 21. Januar 2013 10:09