Pushing a file to the user..

G

Guest

Hello,
I need to write an asp.net page that pushes a files to the user for download.
The code I wrote works just fine, in that it sends a file to the user. But
the HTML controls on the page are not updated..

private void Button1_Click(object sender, System.EventArgs e)
{
//part 1
TextBox3.Text = TextBox1.Text + " " + TextBox2.Text;
TextBox1.Visible = TextBox2.Visible = TextBox3.Visible = false;
TextBox1.Visible = TextBox2.Visible = TextBox3.Visible = true;
Label1.Text = "Thank you for choosing this program.";

//part 2
System.IO.FileInfo info = new
System.IO.FileInfo(System.Web.HttpContext.Current.Server.MapPath(".") + "\\"
+ "txt.txt");
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ContentType = "";
HttpContext.Current.Response.AppendHeader("Content-Disposition:","
attachment; filename=txt.txt");
HttpContext.Current.Response.AppendHeader("Contect-Length", "100");
HttpContext.Current.Response.Charset="UTF-8";
HttpContext.Current.Response.WriteFile("txt.txt");
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.Close();
}
The second part of the code above, the Response object sends the file down
to the user, but the first part of code does not work. Is there a way to get
both to work?

Thanks in advance,
 
W

William F. Robertson, Jr.

There is no way for this to happen. A webrequest can only consist of one
type. Either an image, excel file, or a webpage. part 1 is setting up the
controls with certain values. Then you are clearing the response and
sending the content type "", which I believe trusts the user's machine to
decide what it is. (text file)

The page changes you made in part one are never rendered to the browser.
Also you probably should use Response.End() at the end of the direct file
sending.

IOW what you want to do is not possible with Html. My suggestion, if you
want to do this, is to send part 1 back to the user, have some script that
immediately submits the page, and that postback, you send the information in
part 2. It involves an extra request, but many sites use this
functionality.

HTH,

bill
 
G

Guest

Thanks Bill for the response,
I tried to shuffle part one and part two of the code, but it did not work.
Is it possible to use javascript to do this?
What other possible avanues exist for this problem?
Once the user clicks a button, I would like the controls refreshed, and file
sent to the user.
What other workaround methods exist?

Thanks in advance, for any hint or clue
-Ravi
 
W

William F. Robertson, Jr.

Shuffling the parts on the page will not work. Either you can send the
file, or an updated UI, but only one at a time.

You will have to write out the updated UI in the first postback. The
updated UI will have to write out some javascript code that will postback,
immediately, and on this second postback, you can send the file to them.

bill
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top