Jag har ett problem när jag länkar till word-dokument på vårat intranät. Hej, Jag gjorde en asp.sida efter ett exempel jag såg på nätet. Det kan var lite farligt att skriva så, efterssom du ger möjlighete att ladda ner valfri fil från servern där IUSER_datornamn har rättigheter att läsa. Ja, eller alternativt lägga in filbegränsningar i asp sidan.Öppna word-dokument.
    
    
Istället för att dokumentet öppnas i word så öppnas "word i internet explorer".
Någon som har något tips på hur jag ska göra för att öppna på "rätt sätt".
//JohanSv: Öppna word-dokument.
    
    
Det enda sätt jag vet är detta:
<code>
Response.ContentType = "application/x-msdownload"
Response.AddHeader "Content-Disposition", "attachment; filename=" & dittFilnamn
</code>
På så sätt "tvingar" du att dokumentet skall öppnas i rätt applikation.
Enda nackdelen med detta är att man får en dialogruta som frågar om man vill öppna eller spara filen först.
Jag vet dock inget sätt att komma runt(enkelt sätt alltså) dialogrutan.
/JockeSv: Öppna word-dokument.
    
    
Det fungerar, var det enda sätt jag kunde lösa det på.
Kallade asp-sidan openofficedoc
Sedan kallar jag på sidan med en querystring som pekar på ett officedoc
ex: openofficedoc.asp?doc=<%=Server.MapPath(".")%>\documentet.doc
Koden i asp filen ser sedan ut så här
<%
option explicit
Const ForReading            =  1 
Const TristateTrue          = -1    'Unicode 
Const FILE_TRANSFER_SIZE    = 16384 '16k 
Dim objFso, objFile, objStream 
Dim doc
Dim srv
Dim char
Dim sent
Response.Buffer = True 
doc = Request.QueryString("doc")
srv = Server.MapPath(".")&"\"
Set objFso = Server.CreateObject("Scripting.FileSystemObject")
If not objFso.FileExists(doc) THEN
	Response.Write "Fanns inte"
	Response.End
Else
	Set objFile = objFso.GetFile(doc)
	response.addHeader "Cache-control", "private"
	response.addHeader "Content-Type", "application/octet-stream"
	'Response.ContentType = "application/octet-stream"
	response.addHeader "Content-Disposition", "attachment;filename="&objFile.name
	response.addHeader "Content-Length", objFile.size
	response.addHeader "Content-transfer-encoding", "binary"
	Set objStream = objFile.OpenAsTextStream(ForReading, TristateTrue) 
		Do While Not objStream.AtEndOfStream 
			char = objStream.Read(1) 
			Response.BinaryWrite(char) 
			sent = sent + 1 
			If (sent MOD FILE_TRANSFER_SIZE) = 0 Then 
				Response.Flush 
				If Not Response.IsClientConnected Then 
					TransferFile = False 
					Exit Do 
				End If 
			End If 
		Loop
    Response.Flush     
    objStream.Close 
    Set objStream = Nothing 
    Set objFso = Nothing 
End if
%>Sv: Öppna word-dokument.
    
    
Jag skulle begrännsa det till en katalog. Katalogen bör inte innehålla några asp filer. Utan bara dokument.
Exempel:
<code>
<%
Option Explicit
Const ForReading         =  1 
Const TristateTrue       = -1    'Unicode 
Const FILE_TRANSFER_SIZE = 16384 '16k 
Dim objFso
Dim objFile
Dim objFolder
Dim objStream 
Dim Path
Dim FileName
Dim Buffer
    Response.Buffer = True 
    Response.Clear
    
    Path = Server.MapPath("docs") 'Mapp där filerna ligger
    FileName = Request.QueryString("FileName")
    Set objFso = Server.CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFso.GetFolder(path)
    For Each objFile In objFolder.Files
        If objFile.Name = FileName Then
            Exit For
        End If
    Next
    If objFile Is Nothing Then
        Response.Write "Fanns inte"
    Else
        Response.addHeader "Cache-control", "private"
        Response.addHeader "Content-Type", "application/octet-stream"
        Response.addHeader "Content-Disposition", "attachment; filename=filename=" & objFile.Name & ";"
        Response.addHeader "Content-Length", objFile.size
        Response.addHeader "Content-transfer-encoding", "binary"
        Set objStream = objFile.OpenAsTextStream(ForReading, TristateTrue) 
        Do While Response.IsClientConnected And Not objStream.AtEndOfStream
            Buffer = objStream.Read(FILE_TRANSFER_SIZE) 
            Response.BinaryWrite(Buffer) 
            Response.Flush 
        Loop
        objStream.Close 
        Set objStream = Nothing 
        Set objFso = Nothing 
    End If
    Response.End
%>
</code>Sv: Öppna word-dokument.
    
    
Ex 
IF right(doc,3)  <> "doc" THEN
Response.Write "Otillåten fil"
Response.End
END IF