webForumDet fria alternativet

Korrupt exe-fil utanför webroot

.NET

2 svar · 313 visningar · startad av ironhead

Medlem sedan mars 20011 346 inlägg
Frågan#1

Hej!

Jag har testat detta skript:
http://www.webforum.nu/showthread.php?p=1006363#post1006363

och testat detta:

    Private Sub FileDown()
        Dim buffer(10000) As Byte
        Dim length As Integer
        Dim dataToRead As Long
        Dim filepath As String = "C:\Temp\fil.exe"
        Dim filename As String = System.IO.Path.GetFileName(filepath)
        Try
            iStream = New System.IO.FileStream(filepath, System.IO.FileMode.Open, _
                                                   IO.FileAccess.Read, IO.FileShare.Read)
            dataToRead = iStream.Length
            Response.ContentType = "application/octet-stream"
            Response.AddHeader("Content-Disposition", "attachment; filename=" & filename)
            While dataToRead > 0
                If Response.IsClientConnected Then
                    length = iStream.Read(buffer, 0, 10000)
                    Response.OutputStream.Write(buffer, 0, length)
                    Response.Flush()
                    ReDim buffer(10000)
                    dataToRead = dataToRead - length
                Else
                    dataToRead = -1
                End If
            End While
        Catch ex As Exception
            Response.Write("Error : " & ex.Message)
        Finally
            If IsNothing(iStream) = False Then
                iStream.Close()
            End If
        End Try
    End Sub

Det fungerar jättebra på textfiler, men när jag använder detta skript till exe-filer så blir de korrupta. Måste man modifiera skriptet för att det ska kunna hantera exe-filer?

Medlem sedan mars 20011 346 inlägg
#2

Hjälper inte att sätta ContentType till "application/x-msdownload" heller... :-/

Medlem sedan mars 20011 346 inlägg
#3

Jag fick till det tillslut ;)

        Dim filename As String = "C:\temp\fil.exe"
        Dim fs As FileStream = New FileStream(filename, FileMode.Open)
        Dim r As BinaryReader = New BinaryReader(fs)
        r.BaseStream.Seek(0, SeekOrigin.Begin)
        Dim imageData() As Byte = r.ReadBytes(Convert.ToInt32(fs.Length))
        r.Close()
        fs.Close()
        Response.Buffer = True
        Response.Clear()
        Response.ContentType = "application/octet-stream"
        Response.AddHeader("Content-Disposition", ("attachment; filename=" + filename))
        Response.BinaryWrite(imageData)
        Response.Flush()
        Response.End()
266 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)