05. september 2009 - 09:51Der er
1 kommentar og 1 løsning
Tving download af filer
Jeg skal bruge et script der kan tvinge et download af en fil igennem.
a href virker ikke!
Mit problemer er at jeg skal have downloadet nogle filer af typen *.spp. Der er tilladelse til dette fra webhotelet. Men den nye explorer 7 downloader filerne som *.zip til brugeren.
Jeg har fået følgende script, som skulle kunne løse problemet:
string s = "50.spb"; (den aktuelle fil der skal downloades) string sFilePath = Server.MapPath("Download") + "\\"+s; (fysisk filepath på filen) Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); System.IO.FileInfo fleInfo = new System.IO.FileInfo(sFilePath); Response.AppendHeader("content-disposition", "attachment; filename=" + s); Response.AddHeader("Content-Length", fleInfo.Length.ToString()); Response.ContentType = "application/x-unknown"; Response.WriteFile(fleInfo.FullName);
Men hvordan laves denne kode lige i asp? Eller tilsvarende?
Jeg ledte selv efter sådan en funktion som erstatning for det jeg brugte i forvejen, og fandt på et tidspunkt nedenstående.
Jeg har dog ikke fået det implementeret endnu, så jeg har ikke testet det. Men her er det:
<%@Language="VBScript"%> <%Option Explicit%> <%Response.Buffer = True%> <% On Error Resume Next Dim strPath strPath = CStr(Request.QueryString("file")) '-- do some basic error checking for the QueryString If strPath = "" Then Response.Clear Response.Write("No file specified.") Response.End ElseIf InStr(strPath, "..") > 0 Then Response.Clear Response.Write("Illegal folder location.") Response.End ElseIf Len(strPath) > 1024 Then Response.Clear Response.Write("Folder path too long.") Response.End Else Call DownloadFile(strPath) End If
Private Sub DownloadFile(file) '--declare variables Dim strAbsFile Dim strFileExtension Dim objFSO Dim objFile Dim objStream '-- set absolute file location strAbsFile = Server.MapPath(file) '-- create FSO object to check if file exists and get properties Set objFSO = Server.CreateObject("Scripting.FileSystemObject") '-- check to see if the file exists If objFSO.FileExists(strAbsFile) Then Set objFile = objFSO.GetFile(strAbsFile) '-- first clear the response, and then set the appropriate headers Response.Clear '-- the filename you give it will be the one that is shown ' to the users by default when they save Response.AddHeader "Content-Disposition", "attachment; filename=" & objFile.Name Response.AddHeader "Content-Length", objFile.Size Response.ContentType = "application/octet-stream" Set objStream = Server.CreateObject("ADODB.Stream") objStream.Open '-- set as binary objStream.Type = 1 Response.CharSet = "UTF-8" '-- load into the stream the file objStream.LoadFromFile(strAbsFile) '-- send the stream in the response Response.BinaryWrite(objStream.Read) objStream.Close Set objStream = Nothing Set objFile = Nothing Else 'objFSO.FileExists(strAbsFile) Response.Clear Response.Write("No such file exists.") End If Set objFSO = Nothing End Sub %>
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.