MVC :: Write View To Disk As A File Instead Of Showing In The Browser
May 27, 2010
I've a view which display all data. I'm using ViewData, for loop etc.. on the view, to show the data. It may sound weird, but is it possible to write view to disk as a file instead of showing in the browser. The reason is that, business wants functionality to send the same view file as email attachment to the user.
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.
In an ASP.NET WebForms 2.0 site we are encountering an intermittent bug in IE6 whereby a file download attempt results in the contents of the being shown directly in the browser as text, rather than the file save dialog being displayed. Our application allows the user to download both PDF and CSV files. The code we're using is:
This is called from the code-behind click event handler of a button server control. Where are we going wrong with this approach? Edit Following James' answer to this posting, the code I'm using now looks like this:
HttpResponse response = HttpContext.Current.Response; response.ClearHeaders(); // Setting cache to NoCache was recommended, but doing so results in a security // warning in IE6 //response.Cache.SetCacheability(HttpCacheability.NoCache); response.AppendHeader("Content-Disposition", "attachment; filename="theFilename.pdf""); response.ContentType = "application/pdf"; response.BinaryWrite(MethodThatReturnsFileContents()); response.Flush(); response.End();
However, I don't believe that any of the changes made will fix the issue.
We have had complaints of users losing data that they entered in textboxes in our ASP.NET 2.0 web application. Users are authenticated using Web Single Sign On method. My boss would like to save the client data in a file on their local disk in case they lose connectivity. I know this is not allowed with the default security of ASP.NET.
Would it be possible to programmatically change the ACL permissions for the NETWORK SERVICE account to access the isolated storage folder on the logged in user's local disk? Is there a better way to achieve this goal of persisting user data to a file?
i have store the file information like name and size in the datagrid not the content when i click the view button in the grid how to display file contents
i have successfully showed data using puting directpath in to a textbox(e.g, filename=TextBox1.Text;). but the code above is not working. i dont know why.
I can place an Excel file in the root directory, use Browse and view an xlsx, xlsm or any other Excel file and it (sometimes) pops up in a browser window with no option to save or do anything other than view the Excel document (you can type in the cells and it gives you the option to save if there are any changes). I'm trying to find out how to do that exact thing client-side.
We have a server that allows a client to upload an Excel file and we want them to be able to review it only. If there is a way to bypass the Open message box that pops, that would be ideal, but just getting it to display in a separate, small browser window would be just what the doctor ordered. The Excel files are varied so the content is always different and not necessarily formatted the same. That removes the ability to go with named ranges and definitions.
Currently with the code we have, users can press a view button to review the file they uploaded for errors but it opens up the full version of Excel and then throws errors because it tries to force a save to a temp file. Not exactly ideal and very confusing to the user. I don't habve the exact code available to me at the moment, but I'm hoping that someone can point me in the right direction.
I am using ASP.NET 3.5 with iTextSharp and I have the following code:
var templatePath = Server.MapPath(@"~/Templates/template1.pdf"); var newFilePath = Server.MapPath(@"~/TempFiles/new.pdf"); PdfReader pdfReader = new PdfReader(templatePath); PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFilePath, FileMode.Create)); AcroFields pdfFormFields = pdfStamper.AcroFields; pdfFormFields.SetField("Box1", "007"); pdfFormFields.SetField("Box2", "123456"); pdfStamper.FormFlattening = false; pdfStamper.Close(); Response.ClearContent(); Response.Buffer = true; Response.ContentType = "application/pdf"; Response.AddHeader("Content-Disposition", "attachment;filename=new.pdf")); Response.WriteFile(newFilePath); Response.End();
The above code fills out a pdf file and saves the new file to the TempFiles folder. It then prompts the user to either save or open the file. Can I achieve the same functionality without saving the file to the TempFiles location?
When I am creating Strongly Typed View I get lots of Classes in View Data Drop down. Classes like Automapper, ninject, Interface..., latebound... Due this its very hard to find my project classes. Is there any way to restrict dropdown to only display my project classes?
I need to be able to read an excel file from a file upload control but I can not save the file to disk first, it must be done in memory.
[Code]....
Above is my code for reading the data file if it IS saved to disk, but again, I have to be able to do this without saving the file to disk, it must be done in memory. I have not been able to find any sample code anywhere on how to do this from memory, everything seems to force the file be uploaded, saved to disk, and then read in the connection string, which again I can not do.
I have a css file which I want to read from disk and in that content I want to find and replace all linebreaks (do I look for vbCrlf or ...?)
Public Shared Function GetFileContents(ByVal FullFilename As String) As String Dim filecontents As String = "" If File.Exists(FullFilename) Then Dim objStreamReader As StreamReader objStreamReader = File.OpenText(FullFilename) filecontents = objStreamReader.ReadToEnd() objStreamReader.Close() End If Return filecontents End Function
So in the returned variable "filecontents" I want to find and replace any linebreaks.
How to save Ajax Editor content as an HTML file to a disk?
Let's say I have an Ajax Editor which allows user to type or paste in long message or writting. Once he clicks on "submit" button, an HTML file will be created and save to a disk. I am working on asp.net 3.5, ajax version 3.5 (from codeplex, work well).
I'm using ASP.NET for file uploads, and I'm hitting a bit of a snag in that data sent by the client as multipart form data is read straight into RAM.
Obviously, this means maximum file upload size is limited to the available RAM on the machine, and even then is much smaller as soon as you have multiple simultaneous uploads.
Is it possible to get ASP.NET to write the data to a temporary file on the hard drive as it is recieved rather than reading into RAM?
What are the options for handling file uploads to reduce the memory footprint? Is there a way to upload in chunks? Is there a way to stream upload directly to disk instead of loading entire file in server memory?
i need to save multiple documents stored in SQL server as Image type to disk.
What i want to do is "backup" all files in a table (column) to disk, zip them and Response.TransmitFile(FilePath) to client.
I could use C# ot VB but that would require a lot of connections to database or a lot of server memory and i don't want that, becauze there are a lot of files to be saved Since SQL can write files to disk i was thinking about saving those files to disk directly from sql. Something like when u're doing a backup
I m trying to read the tags of a local HTML file. I found out this code online but it works for the aspx pages on the server and of the current app only. ___________________________________________________
using System.Web.UI.HtmlControls;
foreach (Control c in this.Page.Header.Controls)
{ if (c.GetType() == typeof(HtmlMeta))[code]...
THis code acceses the following section of an html page -