Just nu i M3-nätverket
Gå till innehåll

Automatisk spara mål som


Rest man Klaymen

Rekommendera Poster

Rest man Klaymen

Jag har en sida som automatiskt skickar en fil till användare. Problemet är att jag inte vill att filen ska öppnas i webbläsaren utan sparas på hårddisken. Jag läste litegrann om det i tråden //eforum.idg.se/viewmsg.asp?EntriesId=293131#293590 men jag lyckades inte klura ut hur det egentligen går till.. Någon som kan hjälpa mig?

 

 

/ RMK

Jobbiga_färger.

 

Länk till kommentar
Dela på andra webbplatser

...en sida som automatiskt skickar en fil till användare.

Hur menar du med skickar?

 

Du kan ju testa denna kod:

<%
IF Request("download")<>"" THEN

  ' Ange sökvägen till mappen där filerna finns
  myFolder="./files/"

  download=Request.QueryString("download")
  strFileName=Server.MapPath(myFolder&download)

  'Kolla storleken på filen
  SET objFSO = Server.CreateObject("Scripting.FileSystemObject")
  SET objFile = objFSO.GetFile(strFileName)
  intFileSize = objFile.Size
  SET objFSO = nothing
  SET objFile = nothing

  ' Kolla filändelsen för att sätta content-type
  arrTmp = split(strFileName,".")
  strFileExt = arrTmp(ubound(arrTmp))
  SELECT Case lcase(strFileExt)
    Case "asf"  tmpCT = "video/x-ms-asf"
    Case "asp"  tmpCT = "text/asp"
    Case "avi"  tmpCT = "video/avi"
    Case "bmp"  tmpCT = "image/bmp"
    Case "doc", "dot"  tmpCT = "application/msword"
    Case "gif"  tmpCT = "image/gif"
    Case "htm", "html"  tmpCT = "text/html"
    Case "jpg", "jpeg"  tmpCT = "image/jpeg"
    Case "mdb", "mde", "mda"  tmpCT = "application/x-msaccess"
    Case "mp3"  tmpCT = "audio/mpeg3"
    Case "mov"  tmpCT = "video/quicktime"
    Case "mpg", "mpeg"  tmpCT = "video/mpeg"
    Case "pdf"  tmpCT = "application/pdf"
    Case "ppt", "pps"  tmpCT = "application/vnd.ms-powerpoint"
    Case "png"  tmpCT = "image/png"
    Case "qt", "qtm"  tmpCT = "video/quicktime"
    Case "ra", "ram"  tmpCT = "audio/vnd.rn-realaudio"
    Case "rm"  tmpCT = "video/vnd.rn-realvideo"
    Case "rtf"  tmpCT = "application/msword"
    Case "tif", "tiff"  tmpCT = "image/tiff"
    Case "txt"  tmpCT = "text/plain"
    Case "vsd"  tmpCT = "application/vnd.visio"
    Case "wav"  tmpCT = "audio/x-wav"
    Case "xls", "xlt", "xla", "skv", "csv", "prn"  tmpCT = "application/vnd.ms-excel"
    Case "zip"  tmpCT = "application/x-zip-compressed"
    Case Else
      tmpCT = "application/octet-stream"
  END SELECT
  strContentType = tmpCT

  Response.ContentType = strContentType
  Response.AddHeader "Content-Disposition", "attachment;filename="&download
  Response.AddHeader "Content-Length", intFileSize

  Const adTypeBinary = 1

  SET objStream = Server.CreateObject("ADODB.Stream")
  objStream.Open
  objStream.Type = adTypeBinary
  objStream.LoadFromFile strFileName

  Response.BinaryWrite objStream.Read

  objStream.Close
  SET objStream = Nothing
ELSE 
  %>
  FILER:<br>
  <a href="?download=mysong.mp3">mysong.mp3</a><br>
  <a href="?download=myletter.doc">myletter.doc</a><br>
  <a href="?download=mypicture.jpg">mypicture.jpg</a><br>
  <a href="?download=myarchive.zip">myarchive.zip</a>
  <%
END IF 
%>

...som är snarlik den i det inlägg du länkade till.

 

 

Länk till kommentar
Dela på andra webbplatser

Rest man Klaymen

Det var precis Response.AddHeader jag funderade på.. men borde jag inte kunna använda Response.Redirect för att skicka filen till användaren.. (eller skicka användaren till filen :P ) ? Jag får det inte att fungera.. Därför undrar jag nu hur man istället får den här koden

Content-disposition: attachment; filename=fname.ext

att funka.. Var i HTML-huvudet ska den ligga.. ? För om jag skriver in den så borde jag väl kunna öppna en "spara fil som" ruta genom att använda ResponseRedirect och skicka användaren till filen?

 

 

/ RMK

Jobbiga_färger.

 

Länk till kommentar
Dela på andra webbplatser

Jo men det är ju rätt enkelt. Skapa en ny fil som du kallar getfile.asp:

<%
' Ange sökvägen till mappen där filerna finns
myFolder="./files/"

download=Request.QueryString("download")
strFileName=Server.MapPath(myFolder&download)

'Kolla storleken på filen
SET objFSO = Server.CreateObject("Scripting.FileSystemObject")
SET objFile = objFSO.GetFile(strFileName)
intFileSize = objFile.Size
SET objFSO = nothing
SET objFile = nothing

' Kolla filändelsen för att sätta content-type
arrTmp = split(strFileName,".")
strFileExt = arrTmp(ubound(arrTmp))
SELECT Case lcase(strFileExt)
  Case "asf"  tmpCT = "video/x-ms-asf"
  Case "asp"  tmpCT = "text/asp"
  Case "avi"  tmpCT = "video/avi"
  Case "bmp"  tmpCT = "image/bmp"
  Case "doc", "dot"  tmpCT = "application/msword"
  Case "gif"  tmpCT = "image/gif"
  Case "htm", "html"  tmpCT = "text/html"
  Case "jpg", "jpeg"  tmpCT = "image/jpeg"
  Case "mdb", "mde", "mda"  tmpCT = "application/x-msaccess"
  Case "mp3"  tmpCT = "audio/mpeg3"
  Case "mov"  tmpCT = "video/quicktime"
  Case "mpg", "mpeg"  tmpCT = "video/mpeg"
  Case "pdf"  tmpCT = "application/pdf"
  Case "ppt", "pps"  tmpCT = "application/vnd.ms-powerpoint"
  Case "png"  tmpCT = "image/png"
  Case "qt", "qtm"  tmpCT = "video/quicktime"
  Case "ra", "ram"  tmpCT = "audio/vnd.rn-realaudio"
  Case "rm"  tmpCT = "video/vnd.rn-realvideo"
  Case "rtf"  tmpCT = "application/msword"
  Case "tif", "tiff"  tmpCT = "image/tiff"
  Case "txt"  tmpCT = "text/plain"
  Case "vsd"  tmpCT = "application/vnd.visio"
  Case "wav"  tmpCT = "audio/x-wav"
  Case "xls", "xlt", "xla", "skv", "csv", "prn"  tmpCT = "application/vnd.ms-excel"
  Case "zip"  tmpCT = "application/x-zip-compressed"
  Case Else
    tmpCT = "application/octet-stream"
END SELECT
strContentType = tmpCT

Response.ContentType = strContentType
Response.AddHeader "Content-Disposition", "attachment;filename="&download
Response.AddHeader "Content-Length", intFileSize

Const adTypeBinary = 1

SET objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFileName

Response.BinaryWrite objStream.Read

objStream.Close
SET objStream = Nothing
%>

Då kan du ju "anropa" den med tex:

Response.Redirect("getfile.asp?download=mysong.mp3")
Länk till kommentar
Dela på andra webbplatser

Rest man Klaymen

Funkar det så enkelt? Men måste jag ha hela streamen med.. ? räcker det inte med

Response.AddHeader "Content-Disposition", "attachment;filename="&download
Response.AddHeader "Content-Length", intFileSize

och sedan en vanlig

<a href="...

 

EDIT: Ok jag fattar det nu. Koperade in din kod och lekte sedan med den tills jag fattade hur den fungerade. Byggde då en egen.. Tack för hjälpen du får så många poäng det går :D

 

 

/ RMK

Jobbiga_färger.

 

[inlägget ändrat 2004-05-09 21:51:33 av Rest man Klaymen]

Länk till kommentar
Dela på andra webbplatser

Tackar tckar, alltid kul att kunna hjälpa till!

 

/Cluster

----------------------------------------

"Den som försummar att dricka ur erfarenhetens källa kommer troligen att dö av törst i okunnighetens öken." - Ling Po

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...