User Name Password Register
DaniWeb IT Discussion Community
All
What is DaniWeb IT Discussion Community?
You're currently browsing the ASP.NET section within the Web Development category of DaniWeb, a massive community of 426,188 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 1,794 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our ASP.NET advertiser: Lunarpages ASP Web Hosting
Views: 4261 | Replies: 14 | Solved
Reply
Join Date: Apr 2007
Posts: 4
Reputation: vidbee is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
vidbee vidbee is offline Offline
Newbie Poster

Downloading a file

  #1  
Apr 9th, 2007
I am writing an ASP.net application (with VB.net). Users are allowed to register and upload files. I want to allow them to download the files at a later point. How should I do this? Any help is appreciated.
AddThis Social Bookmark Button
Reply With Quote  
Join Date: Nov 2005
Location: Mostar
Posts: 88
Reputation: ManicCW is an unknown quantity at this point 
Rep Power: 3
Solved Threads: 10
ManicCW's Avatar
ManicCW ManicCW is offline Offline
Junior Poster in Training

Re: Downloading a file

  #2  
Apr 10th, 2007
Use forms authentication to restrict user rights. Then use one function to download file. What exactly do you need?
Reply With Quote  
Join Date: Apr 2007
Posts: 4
Reputation: vidbee is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
vidbee vidbee is offline Offline
Newbie Poster

Re: Downloading a file

  #3  
Apr 11th, 2007
Originally Posted by ManicCW View Post
Use forms authentication to restrict user rights. Then use one function to download file. What exactly do you need?



I have already done the authentication part. I now have the full path to the file on the web server in a string. I dont know what the code to download the file should be. I already tried some things from the Internet, but nothing has worked so far.

One other thing I tried was to have a download hyperlink. I set the navigate URL to the full path of the file. When I click on it, I want a pop-up with options to either save or open the file. I am dealing with only .txt, .doc and .pdf files.
Reply With Quote  
Join Date: Nov 2005
Location: Mostar
Posts: 88
Reputation: ManicCW is an unknown quantity at this point 
Rep Power: 3
Solved Threads: 10
ManicCW's Avatar
ManicCW ManicCW is offline Offline
Junior Poster in Training

Re: Downloading a file

  #4  
Apr 11th, 2007
Here is my function for downloading file:

    Public Sub DownloadFile(ByVal path As String)
        With HttpContext.Current
            Dim file As IO.FileInfo = New IO.FileInfo(.Server.MapPath(path))
            If file.Exists Then
                .Response.Clear()
                .Response.AddHeader("Content-Disposition", "attachment; filename=" & file.Name)
                .Response.AddHeader("Content-Length", file.Length.ToString())
                .Response.ContentType = "application/octet-stream"
                .Response.WriteFile(file.FullName)
                .Response.End()
            End If
        End With
    End Sub

Put this function in some module or class. Make sure it is public.
Just pass path to function. :cheesy:
And the cool thing is that it will force download.

Hope it helps.
Last edited by ManicCW : Apr 11th, 2007 at 9:44 am.
Reply With Quote  
Join Date: Apr 2007
Posts: 4
Reputation: vidbee is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
vidbee vidbee is offline Offline
Newbie Poster

Re: Downloading a file

  #5  
Apr 12th, 2007
I tried this code. But I am getting the following errors:

'C:\AddlDocs\vidhyavee_1imp.txt' is not a valid virtual path.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: 'C:\AddlDocs\vidhyavee_1imp.txt' is not a valid virtual path.

Source Error:


Line 151: Public Sub DownloadFile(ByVal path As String)
Line 152: With HttpContext.Current
Line 153: Dim file As IO.FileInfo = New IO.FileInfo(.Server.MapPath(path))
Line 154: If file.Exists Then
Line 155: .Response.Clear()

Tha path variable should be containing the complete path to the file, including the file name, right? Also, I am using the ASP development server from the Web Developer's environment to test my application. Should I be doing something else? Is there something wrong with my browser settings?

One other thing I tried was to have a hyperlink with the navigate URL set to the complete file path. It doesnt download the file automatically, but I am able to save the file by doing a 'save target as'. Do you think I should just proceed this way?
Last edited by vidbee : Apr 12th, 2007 at 9:11 am. Reason: Changed font color
Reply With Quote  
Join Date: Nov 2005
Location: Mostar
Posts: 88
Reputation: ManicCW is an unknown quantity at this point 
Rep Power: 3
Solved Threads: 10
ManicCW's Avatar
ManicCW ManicCW is offline Offline
Junior Poster in Training

Re: Downloading a file

  #6  
Apr 13th, 2007
The error is very clear. You are passing absolute path instead of relative. Pass string like "~/MyFiles/MyFile.doc". If you want to use absolute path then fix code like this:

Instead of:

Dim file As IO.FileInfo = New IO.FileInfo(.Server.MapPath(path))

Put this:

Dim file As IO.FileInfo = New IO.FileInfo(path)


Hope it helps.
Reply With Quote  
Join Date: Apr 2007
Posts: 4
Reputation: vidbee is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
vidbee vidbee is offline Offline
Newbie Poster

Re: Downloading a file

  #7  
Apr 13th, 2007
It worked. Thank you so much!
Reply With Quote  
Join Date: May 2007
Posts: 4
Reputation: pandiyarajan is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 1
pandiyarajan pandiyarajan is offline Offline
Newbie Poster

Re: Downloading a file

  #8  
May 7th, 2007
Thanks for giving the code to download the file.

But when I am using in my application. i am getting the error like this
"Server Application Unavailable"
Upon seeing the event log it says
"aspnet_wp.exe stopped unexpectedly". do you know why it is stopping.
Reply With Quote  
Join Date: Nov 2005
Location: Mostar
Posts: 88
Reputation: ManicCW is an unknown quantity at this point 
Rep Power: 3
Solved Threads: 10
ManicCW's Avatar
ManicCW ManicCW is offline Offline
Junior Poster in Training

Re: Downloading a file

  #9  
May 7th, 2007
Where did you put this function and how did you call it?
Reply With Quote  
Join Date: May 2007
Posts: 4
Reputation: pandiyarajan is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 1
pandiyarajan pandiyarajan is offline Offline
Newbie Poster

Re: Downloading a file

  #10  
May 8th, 2007
Hai

I am using like this, Calling as a function from the linkbutton click event. I am writing in the code behind.

Private Sub lnkDownload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lnkDownload.Click
Call DownloadFile("Downloads/xyz.exe")
End Sub

Public Sub DownloadFile(ByVal path As String)
With HttpContext.Current
Dim file As IO.FileInfo = New IO.FileInfo(.Server.MapPath(path))
If file.Exists Then
.Response.Clear()
.Response.AddHeader("Content-Disposition", "attachment; filename=" & file.Name)
.Response.AddHeader("Content-Length", file.Length.ToString())
.Response.ContentType = "application/octet-stream"
.Response.WriteFile(file.FullName.ToString)
End If
End With
End Sub
Reply With Quote  
Reply

Only community members can participate in forum threads. You must register or log in to contribute.

DaniWeb ASP.NET Marketplace
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

Thread Tools Display Modes

Similar Threads
Other Threads in the ASP.NET Forum

All times are GMT -4. The time now is 6:49 am.
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC