Avatar billede Kim Neesgaard Seniormester
10. august 2006 - 13:54 Der er 2 kommentarer og
1 løsning

Åbne en fil på en webserver ved hjælp af kode

Jeg har til en lille applikation lavet en upload funktion, hvor brugeren kan pege på en fil af en given type og få den gemt i et bibliotek på webserveren. Samtidig noterer jeg et ID, stien og filnavnet i en Accessdatabase. Det virker fint.

På samme form viser jeg de attachments, der allerede findes til et givet ID, dvs. et udtræk fra Access vist i et datagrid med et selectlink. Jeg vil nu gerne, at en bruger kan klikke på en given linie og herved kunne åbne det pågældende attachment, dvs. jeg mangler koden, der skal stå her:

Private Sub dgAttachments_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dgAttachments.SelectedIndexChanged
?       
End Sub

Sti og filnavn har jeg fra Accessdatabasen.

Hvordan kan man gøre det?
Avatar billede websam Nybegynder
10. august 2006 - 14:04 #1
Jeg bruger denne metode til det :

Private Sub DownloadFile(ByVal fname As String, _
                            ByVal forceDownload As Boolean)
        Dim path As String = MapPath(fname)
        Dim name As String = Mid(fname, InStrRev(fname, "/") + 1)
        Dim ext As String = Right(fname, 4)
        Dim type As String = ""

        If Not IsDBNull(ext) Then
            ext = LCase(ext)
        End If

        Select Case ext
            Case ".htm", "html"
                type = "text/HTML"
            Case ".txt"
                type = "text/plain"
            Case ".doc", ".rtf"
                type = "Application/msword"
            Case ".csv", ".xls"
                type = "Application/x-msexcel"
            Case ".pdf"
                type = "Application/pdf"
            Case Else
                type = "text/plain"
        End Select

        If (forceDownload) Then
            Response.AppendHeader("content-disposition", _
            "attachment; filename=" + name)
        End If
        If type <> "" Then
            Response.ContentType = type
        End If

        Response.WriteFile(path)
        Response.End()

    End Sub

Og henter så en fil med :

DownloadFile(Request.QueryString("file"), True)

Mon ikke du kan tilpasse det til dit senarie ;o)

/Websam
Avatar billede Kim Neesgaard Seniormester
10. august 2006 - 15:29 #2
Det ser godt ud! Er det ikke korrekt, at det er disse, der 'gør arbejdet':


Response.AppendHeader("content-disposition", "attachment; filename=" + "c:\inetpub\wwwroot\UploadFiles\PromisII\Test31.doc")
Response.ContentType = "Application/msword"
Response.WriteFile("c:\inetpub\wwwroot\UploadFiles\PromisII\Test31.doc")
Response.End()

?

Jeg har blot brudt den ned for at forstå, hvad der sker, men jeg vil bestemt bruge din funktion i mit program. Mange tak - vil du lægge et svar?
Avatar billede Kim Neesgaard Seniormester
03. oktober 2006 - 15:57 #3
Når jeg har åbnet den attachede fil med Open i dialogboksen, så 'dræbes' samtidig min VS applikation, dvs. når man igen lukker den attachede fil, er ens oprindelige VS applikation lukket - hvordan undgår man det?
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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