Send Binary Stream To Browser And Then Update The Page?
Mar 15, 2011
I have an ASP.NET page with a text status and a button to export an Excel file. When the user clicks the button, I want to generate the file on the fly and return it to the client as binary stream. Then I want to change the text status to show success/failure.
So far I can generate and send the file no problem, but obviously the statuses don't get displayed, since the server response was used to send the file and not a new updated page with the new status.
I'm not sure what's the cleanest way to approach this. I can think of something but is it the best way:
User clicks on button. File is generated and saved as a stream in the session. Statuses are updated and the page with the new statuses is returned to the client. A piece of Javascript on the page opens a 3rd party page which retrieves the saved stream from the session.
I was wondering if there is any difference in performance (or any other important factor) between a file sent to the browser from our server by this method :
For i = 1 To fileSize chunk If Not Response.IsClientConnected Then Exit For Response.BinaryWrite stream.Read(chunk) Response.Flush Next VS
the old plain file access method that the IIS comes with.
We are working on a file manager handler for security reasons and would like to know what is the performance hit.
I don't think there is a way around this but figured I'd ask... We have an application where a user can generate PDF documents that are streamed to the browser. There is some additional functionality going on behind the scene and I would like to be able to display a message to the user (via updating a literal tag on the page). I don't get any errors when doing this but the page isn't updated and the message isn't displayed. My guess is that streaming the document blocks any other content from going down to the client. In particular, we're using CeTe Dynamic PDF and calling one of their methods but I think it's essentially just doing a Response.BinaryWrite to stream out the PDF.
I have a MS Chart Control and I'm trying to serialize the chart to view state. When teh page postbacks, I wnat to de-serialize the chart from ViewState, then load it back to the Chart's serializer. When the Chart1.Serializer.Load is called, I get an error message stating Data at the root level is invalid, line 1 position 1.
So here's what I have:
Chart1.Serializer.Format = System.Web.UI.DataVisualization.Charting.SerializationFormat.Binary; Chart1.Serializer.Content = System.Web.UI.DataVisualization.Charting.SerializationContents.All; Chart1.Serializer.Save(myStream); ViewState["myStream"] = myStream.ToArray(); On postback, when the routine is called: System.Byte [] byters; System.IO.MemoryStream myStream = new System.IO.MemoryStream(); if (ViewState["myStream"] != null) { byters = (System.Byte[])ViewState["myStream"]; myStream.Write(byters,0,byters.Length); myStream.Position = 0; Chart1.Serializer.Load(myStream); // this line throws a XmlException - data at the root level is invalid. line 1 , position 1. }
The length of the stream was 15,518 and capacity was 16,384 when it made the save. On postback, both capacity and length became 15,518.
I'm using Filestream for read big file (> 500 MB) and I get the OutOfMemoryException. Any solutions about it?? I want this in my app asp.net: Read DATA from Oracle Uncompress file using FileStream and BZip2 Read file uncompressed and send it to asp.net page for download. When I read file from disk, Fails !!! and get OutOfMemory. My Code is:
using (var fs3 = new FileStream(filePath2, FileMode.Open, FileAccess.Read)) { byte[] b2 = ReadFully(fs3, 1024); } // [URL] public static byte[] ReadFully(Stream stream, int initialLength) { // If we've been passed an unhelpful initial length, just // use 32K. if (initialLength < 1) { initialLength = 32768; } byte[] buffer = new byte[initialLength]; int read = 0; int chunk; while ((chunk = stream.Read(buffer, read, buffer.Length - read)) > 0) { read += chunk; // If we've reached the end of our buffer, check to see if there's // any more information if (read == buffer.Length) { int nextByte = stream.ReadByte(); // End of stream? If so, we're done if (nextByte == -1)............................
Is is possible to update an image on an HTML page using the response stream of an ASP.NET Generic Handler? For example, if I have the following code on a handler: [URL]
How can I call the handler in jQuery, using .ajax, and set an image on the page equal to the image that is returned by the Handler? I am ignoring the query string variable at the moment as I just want to get this working. Secondly, if I can do above, how can I loop through all of DIVs on the page that are of class "content", select a guid out of a hidden field to use as my query string parameter, and update the associated image within the same content DIV tag? A content div tag would look as follows:
I would like to have all the images updated on a periodic interval, so essentially, as a quick recap, I would need to have: A loop through all of my DIVs of class "content", occuring every n. seconds. Extractation the GUID from the hidden field. A call to my ASHX handler to get the updated image. Set the returned image to the corrisponding image on the page. Is this something that would be difficult to achieve? If not, what would I need to do to make this function in the above manner?
Looking for the best technique on handling or at least some documentation showing an example.
Starting Page
Gridview control withing an update panel (also various controls used for filtering NOT IN UPDATE PANEL)
Databinding does not happen during page load.
Databinding is initiated when update panel trigger (asp:Button object) is clicked
Hyperlink column is added to returned records
Hyperlink posts to a separate page for detail for record which the hyperlink was clicked.
Second Page
While navigating via the browser back button to previous page (which contained the update panel and gridview) only the (various controls used for filtering) have retained state. The gridview is not shown (which is how the page loads initially when starting) How can I retain the state of the Gridview and add a step in the browser history all together?
I have an excel file in my Response Output stream. I can Open the stream as a file after a prompt, but it doesn't seem I can save it directly to a specified folder on my client.
I am generating an Excel file upon a click of a button in an update panel. It is throwing a parsing error.
If I keep the button outside the update panel it is working fine. Why isn't it working in the update Panel?
Response.ContentType = "application/vnd.ms-excel" Response.AddHeader("Content-Disposition", String.Format("attachment;filename={0}", filename)) Response.Clear() Response.BinaryWrite(WriteToStream.GetBuffer) HttpContext.Current.ApplicationInstance.CompleteRequest() Private Function WriteToStream() As MemoryStream 'Write the stream data of workbook to the root directory Dim file As MemoryStream = New MemoryStream hssfworkbook.Write(file) Return file End Function
I'm having a hard time solving what should (I think) be an easy problem. I have a formview defaulting to Editmode. One of my data fields is a binary image. How can I change the editItem template to allow a user to upload a new image into the binary image field?
1) client logins to ASP.NET web site (www.site.com) where the session expired in 3000 minutes and cookieless set to false.
2) After some time client opens Activex in browser. Activex connects to Session Enabled Web Service (www.site.com/Service.asmx) through .NET managed classes.
What I need to do is send cookies which browser recieved while authenticated through Web site. and if such cookie does not exist then the user is not authenticated and connection to Web service will be prohibited.
I understand that I need to use System.Net.CookieContainer class, but How do I set this broser cookie to this class?
localhost.WebService1 web = new localhost.WebService1(); System.Net.CookieContainer cookie = new System.Net.CookieContainer(); web.CookieContainer = cookie;
I'm looking for possible ways for sending files from browser to server. One obvious way is using form with enctype='multipart/form-data'. I wonder if there are other ways than this.
The reason I ask you this question is this file uploader: http://aspnetajax.componentart.com/control-specific/upload/features/core_features/WebForm1.aspx
It's not flash based, but it sends the file in a way that it gives you a progress bar, but when you send a file with form with enctype='multipart/form-data' the whole file will be send to the server so you can't actually show a progress bar of uploading process.