Architecture :: How To Handle An Excel Stream And The Http Response
Jan 27, 2011
I'm using .net 3.5 and am currently creating a web application used to generate a report through Aspose.CellsActually, the page is composed in a form where I get the configuration of the report I have to generate. The "generation" button is in an update panel. When I click on it, the "generation" button is hidden and a progress bar appears. When the excel file is generated, I save it in a memory stream and I send it back to the aspx page where I change the headers to allow the file's download.
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 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'm trying to return an xml string from a IHttpHandler to a like this: context.Response.Write(xml); When I receive the response in my .aspx.cs I try to load the document as follows: var xml = XDocument.Load(xmlString); but I get an Illegal Characters in Path error message. I've also tried
in previously asked question answeres said they dont get what i want to do exactly so heres is the full code also i simply want that instead of a TABLESe i rendered an image( of the content ) on the page
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.IO; using System.Text; using System.Data; using System.Drawing; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { System.Web.UI.WebControls.Panel panelmain = new System.Web.UI.WebControls.Panel(); System.Web.UI.WebControls.Literal abc = new System.Web.UI.WebControls.Literal(); abc.Text = "as<br/>dasdas<br/>dasdad"; DataSet ds = new DataSet(); DataTable dt; DataRow dr; DataColumn idCoulumn; DataColumn nameCoulumn; dt = new DataTable(); idCoulumn = new DataColumn("ID", Type.GetType("System.Int32")); nameCoulumn = new DataColumn("Name", Type.GetType("System.String")); dt.Columns.Add(idCoulumn); dt.Columns.Add(nameCoulumn); dr = dt.NewRow(); dr["ID"] = 1; dr["Name"] = "Name1"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["ID"] = 2;.............
MemoryStream export = new MemoryStream(); iCalendarSerializer serializer = new iCalendarSerializer(iCal); serializer.Serialize(export,System.Text.Encoding.UTF8); return export;
so I am using the C# DDay.iCal library for exporting my calendars. Serialize takes in a "stream" so I passed it a memory stream. I now have a generic handler that calls the method that contains the above code.
public class CalendarHandler : IHttpHandler { private Calendar service; private Membership membershipS; public void ProcessRequest(HttpContext context) { service = new Calendar (); membershipS = new Membership (null); string userName = context.User.Identity.Name; Guid userId = membershipS.GetUsersId(userName); context.Response.ContentType = "text/calendar"; // calls the export calendar(the code that showed above that uses dDay ical. var t = service.ExportCalendar(userId); t.WriteTo(context.Response.OutputStream); } public bool IsReusable { get { return false; } } }
So now I wrote the icalendar to the Outputstream. Now I have a jquery post that goes to this method and now I am not sure how to take the OutputStream result that the jquery post will get and make it popup with a save dialog box.
I created a simple Http Module that starts a timer on the PreRequestHandler and stops the timer on the PostRequestHandler to calculate the time it took the page to load. I then create some simple html and write my results to Response.Write. Since I'm doing this in the PostRequestHandler it's adding my results after the </html> tag. That's fine for testing but I need in a scenario where the page needs to validate.
I can't seem to figure out how I could manipulate the Response object to insert my results before the </body> tag. Response.Write and Response.Output.Write don't have that flexibility and I couldn't see a way to work with the Response as a string. Am I missing something easy?
We're getting this weird exception when trying to create a BitmapDecoder off an ASP.Net response stream. This is the line of code that throws the exception:
BitmapDecoder dec = BitmapDecoder.Create( Request.Files[0].InputStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);
Here's some info on the file being uploaded: Filename: bank statement.jpg, Content length: 266041, Mime type: image/jpeg
This is the exception stack trace:
System.IO.IOException: Cannot read from the stream. ---> System.Runtime.InteropServices.COMException (0x88982F72): Exception from HRESULT: 0x88982F72 [code]...
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?
Is is possible to write to the http response stream from a dynamically created bitmap using the Response.Write/WriteFile without saving the image to the hard drive?
I would like to read all content that's been written to the output stream. I'm attempting to do this using an HTTP module, and it seems like the obvious timing would be when handling the PreSendRequestContent event.
However, if the output stream seems to be set to write-only, as I can't read using a StreamReader. Is there a way I read and re-write the content without writing my own IIS module?
problem with Stream.Write() where it works under a dev (Windows 7) environment but fails under a server environment (Windows 2008 R2 Enterprise)?
I'm basically working with some third party code which reads from a FileStream and writing to an Http request, nothing unusual and it's doing the following things:
Ensuring that Response.KeepAlive is false (was originally true but worked W7 and not W2K8 so tried false but it doesn't ); Ensuring that the Write includes the length of the bytes to write; Ensuring that I Flush the stream afterwards;
The error that I encounter is the rather vague 'The request was aborted: The request was canceled.' with InnerException of 'Cannot close stream until all bytes are written.'. Now, my code works perfectly under Windows 7 so I still suspect that something is actively blocking this writing although I am not sure what, how and where.
One other possibility I wondered about was whether the encoding might be different under Windows Server 2008 R2 as opposed to Windows 7?
Here's a code snippet from the relevant method (a bit convoluted but, disclaimer, I didn't write it :-):
After a call to initial HttpWebResponse.GetResponseStream() and reading through the stream, that stream is done for and cannot be reused.
I have a situation where I need to examine the content of the response and if it is of a certain data, get another page and then pass the new response down the line. Otherwise, pass down the original response as is. The only problem is that after examining the response to check for this "special data", that response is no good to the downstream code.
The only way, I can think of, to make this transparent to the downstream code, is to create a derived class of HttpWebResponse, and somehow cache the data streamed, and pass that cached stream down the line instead of the initial stream. I'm not sure if that's even feasible since I haven't looked into it further.
I am trying to use a custom ITempDataProvider provider to store TempData in a browser's cookie instead of session state. However, everything works fine except that I am unable to remove the cookie from the Response stream after reading it. The code exexutes fine but the cookie won't go away.
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)............................
I have an httpmodule and it has a handler for OnEndRequest. I am trying to write the HttpContext.Response.OutputStream to a file. I am trying to use the Read method of it. But when it is called the exception message i get is "Specified method is not supported". So i am not able to do what i want that is, write the response to a file on the disk. I am able to write the HttpContext.Request.InputStream to a file using its Read method which i do in a handler for OnBeginRequest.
I need to to export a file to the user. It takes 1-2 min to generate the file so I'd like to have the page go into a kind-of modal mode with a layover on the page and a 'Working' spinner showing. The problem is I can't make the modal stuff go away after Save File dialog is closed.
How can I remove the layover after the dialog is done?
My web page contains a file upload control that is used to select excel file. What my code does; is to read the content of that file and store its content to DB. Right now, I save this file to server and read its content using OLEDB.I want to know is there any way i can read the content without saving it on the server?
how do u handle dates in mvc when request is a http GET? I remember some discussoin on this last year but cant find the posts.. things like culture unaware, splitting the date field to 3 text fields insted of 1.
I am using Response.flush() method for download the csv file. I am create the html on page and call the Response.flush method. It is working good But when i am cancel the download and do the another operation , It genrates the error.
I have created a dynamic signature for our members in Asp.net 2.0 with VB code behind that they can use as a signature in various message boards using an http handler.This is the first time I have evered used a http handler and I am probably missing a step on how to use it.The direct url to the signature is: [URL]where the ID is a particular member. This works fine on most message boards and if you copy the link directly in a browser window, but not in other message boards.In order for this signature to work on all message boards, the url syntax would need to be as follows:[URL] or something similar where the URL does not have question marks, equal signs and the file name ends in .png .How can I go about doing this where the link will go to my http handler and overlay text, etc.
I know all about this exception, read the msdn article here [URL] but I do not know how to handle this when my boss does not want me to throw in false for the Response.End.
I need to handle 2 different scenarios.1. Webapplication in a Servercenter. A user can authenticate against a companydatabase with an user account that is stored inside the companytable. We provide services to different companies, and every company has their own database. A management database contains the relation of company to database and server. A user need the companyname, username and password to logon.2. Webapplication on a company serverThe services are hosted on hardware inside the companynet. There is only one company to handle, so that a user doesn't need a companyname for login.Whats the best approach for this problem?
I've a question about something I'm searching for,for too long! We've build an application from which an admin upload songs into a database. Then user can bought songs and download it individualy. The problem is that when user download MP3 songs with the code below, it works great in Firefox and Chrome but not in IE8 simply because WMP trying to open the songs and it just don't get it instead of having a "Save as" dialog? Any issue on HOW can i force to have the "Save As" diaglog? Note that I have not MP3 physicaly on server it's in database. So I can't direct link to song ...