Benutzer mit den meisten Antworten
.lnk zu einem Word Dokument öffnen

Frage
-
Ich möchte über eine Webseite eine Verknüpfung zu einem Worddokument als Link anzeigen. Wenn einer auf dem link klickt, soll über die Verknüpfung (.lnk) das Word Dokument geöffnet werden.
Wie stelle ich das am besten an? Die Verknüpfungsdatei liegt innerhalb der Website in einem Ordner.
Antworten
-
Hallo Michael,
das funktioniert so nicht. .lnk aus dem Internet ist nichts, was ein Browser direkt öffnet.
Damit IIS die Datei überhaupt ausliefert, musst Du den MimeType für .lnk erst im IIS registrieren. Das geht über die web.config der Website:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <staticContent> <mimeMap fileExtension=".lnk" mimeType="application/octet-stream" /> </staticContent> </system.webServer> </configuration>
Wenn die Datei dann vom Browser angefordert wird,erscheint in der Regel ein "Speichern unter..." Dialog mit der Option, die Datei direkt zu öffnen. Falls man letzteres macht, wird die verknüpfte Datei (je nach Browser) dann geöffnet.
Man kann zwar auch versuchen, einen Content-Disposition Header über einen Handler mitzugeben, der bei anderen Dateiarten teils dafür sorgt, dass die Datei inline im Browser geöffnet wird, bei .lnk Dateien scheint das aber nicht zu funktionieren.
<%@ WebHandler Language="VB" Class="Downloader" %> Imports System Imports System.Web Imports System.IO Public Class Downloader : Implements IHttpHandler Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest Dim FilePath As String = "X:\Ordner\Test.docx.lnk" 'context.Request.QueryString( "File" ) Dim FileName As String = Path.GetFileName( FilePath ) If File.Exists( FilePath ) Then context.Response.ContentType = "application/octet-stream" context.Response.AddHeader( "Content-Disposition", "inline;filename=" & FileName ) context.Response.WriteFile( FilePath ) End If End Sub Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable Get Return False End Get End Property End Class
Ich frage mich allerdings, wohin die Verknüpfung zeigt? Auf eine lokale Datei auf dem Client?
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 michael floeter Dienstag, 15. September 2015 16:48
Alle Antworten
-
Hallo Michael,
das funktioniert so nicht. .lnk aus dem Internet ist nichts, was ein Browser direkt öffnet.
Damit IIS die Datei überhaupt ausliefert, musst Du den MimeType für .lnk erst im IIS registrieren. Das geht über die web.config der Website:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <staticContent> <mimeMap fileExtension=".lnk" mimeType="application/octet-stream" /> </staticContent> </system.webServer> </configuration>
Wenn die Datei dann vom Browser angefordert wird,erscheint in der Regel ein "Speichern unter..." Dialog mit der Option, die Datei direkt zu öffnen. Falls man letzteres macht, wird die verknüpfte Datei (je nach Browser) dann geöffnet.
Man kann zwar auch versuchen, einen Content-Disposition Header über einen Handler mitzugeben, der bei anderen Dateiarten teils dafür sorgt, dass die Datei inline im Browser geöffnet wird, bei .lnk Dateien scheint das aber nicht zu funktionieren.
<%@ WebHandler Language="VB" Class="Downloader" %> Imports System Imports System.Web Imports System.IO Public Class Downloader : Implements IHttpHandler Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest Dim FilePath As String = "X:\Ordner\Test.docx.lnk" 'context.Request.QueryString( "File" ) Dim FileName As String = Path.GetFileName( FilePath ) If File.Exists( FilePath ) Then context.Response.ContentType = "application/octet-stream" context.Response.AddHeader( "Content-Disposition", "inline;filename=" & FileName ) context.Response.WriteFile( FilePath ) End If End Sub Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable Get Return False End Get End Property End Class
Ich frage mich allerdings, wohin die Verknüpfung zeigt? Auf eine lokale Datei auf dem Client?
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 michael floeter Dienstag, 15. September 2015 16:48