468,134 Members | 1,186 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,134 developers. It's quick & easy.

Pushing a file to the user..

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,

Nov 19 '05 #1
4 1882
Try switch part 1 and part 2 around
On Tue, 1 Mar 2005 19:53:02 -0800, Ravi J
<Ra***@discussions.microsoft.com> wrote:
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("Conten t-Disposition:","
attachment; filename=txt.txt");
HttpContext.Current.Response.AppendHeader("Contec t-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,


Nov 19 '05 #2
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
"Ravi J" <Ra***@discussions.microsoft.com> wrote in message
news:5A**********************************@microsof t.com...
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,

Nov 19 '05 #3
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
Nov 19 '05 #4
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
"Ravi J" <Ra***@discussions.microsoft.com> wrote in message
news:C0**********************************@microsof t.com...
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

Nov 19 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

3 posts views Thread by John Wood | last post: by
reply views Thread by Chua Wen Ching | last post: by
9 posts views Thread by James Macbell | last post: by
27 posts views Thread by didacticone | last post: by
1 post views Thread by gcdp | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.