Avatar billede ch007 Nybegynder
05. september 2009 - 09:51 Der 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?
Avatar billede kgkg Nybegynder
05. september 2009 - 12:37 #1
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
%>
Avatar billede ch007 Nybegynder
05. september 2009 - 17:17 #2
Tak :) Det virker!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester