C# - How To Efficiently Send Large Files From The Database To The Browser
Jun 1, 2010
In my web application I am working with files. Some files are very large. I use Response.Write() to write the file to the browser. This goes well for the smaller files, but for large files this can take a while and the bandwidth is fully used.
Is it possible to split large documents and send it piece by piece to the browser? Are there other ways to send the document quicker to the browser?I hold the document as a property of an object.
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.
I want to upload some large files from a web page to MS SQL Sever database, I am very sure that it is sounding weird.
File sizes are around 100MB.
I am having following settings,
SessionTimeOut period = 60 Mins,
Server Operation timeout = 60 Mins,
SQL Connection Timeout = 4 mins (Not sure if this is helping)
This is page is going to be used by our client only once a week & as they are having web farm environment we are avpiding to store these files on file systems.
Currenty we are able to upload files with sizes upto 8 MB succesfully. But when we are uploading a file of 100MB it fails, its for sure that operation takes lots of time.
We are going to develop a website where we need to store large number of files. The file size may be uptp 50 MB. What approach should we follow:
1) We should store files in Database 2) We should have a directory and store all the files in that 3) We should hire a SAN Storage and use this seperate location to store the files.
I've got a database table with a very large amount of rows. This table represents messages that are logged by a system. Each message has a message type and this is stored it it's own field in the table. I'm writing a website for querying this message log. If I want to search by message type then ideally I would want to have a drop down box listing the message types that have come up in the database. Message types may change over time so I can't hard code the types into the drop down. I'll have to do some sort of lookup. Iterating over the entire table contents to find unique message values is obviously very stupid however being stupid in the database field I'm here asking for a better way. Perhaps a separate lookup table which the database occasionally updates listing just the unique message types that I can populate my drop down from would be a better idea.
The platform I'm using is ASP.NET MVC and SQL Server 2005
There are bunch of files stored in a DataBase as varbinary/image data. I am writing a program to extract these file data and send them to the browser so file can be opened or saved. My method is,
[code]....
BUT this method creates a file in the Server and then transmit to the browser. Means 100s of files will be created in the server when I open 100s of files with this process, naturally I want to avoid that.
Is it possible to do this without creating a copy of the file in the server ?
How can i display in web browser directly from the database varbinary Office Files (Word, Excel, PowerPoint, and many others like Images), like this example in PDF [URL] ....
Is there a way of filtering large CSS files for the only required selectors on a page, and creating css files that contain just these selectors?
Case: I have a very large CSS file that I want to filter on a per page basis, so that the file size is cut down and can be cached by mobile devices. I was thinking along the lines of something like a server side dust me selectors tool.The particular project I am working on is using ASP.NET MVC.
I've gone through this link. (http://connect.microsoft.com/VisualStudio/feedback/details/544562/cannot-send-e-mails-with-large-attachments-system-net-mail-smtpclient-system-net-mail-mailmessage)
It is not possible to send an e-mail with an attachment larger than 4 MB in .NET Framework 4.0. The same code works for small and large files if you set the target platform from .NET Framework 4.0 to .NET Framework 3.5. So this cannot be a problem with our mail-configuration! I get no error if I attach e.g. 10 files of 2 MB! I searched through Google but I didn't get it.
Workaround solution is not working fine as expected. After using this workaround for a while, I found that some files are corrupted. So this is not a solution for this bug.
We've applied that Microsoft patch and we're still seeing the issue?
I have part of a project whereby I need to send 1 to up to 2000 emails from a webpage. One open source bug tracker used a Thread to send emails but it was riddled with bugs. So just want to know if anyone has any ideas of how I can create a procedure that send up to 2000 emails a go?
I was told by one of my colleagues to leave it as one process (normal routine sending one email at a time) as it won't take long to process all the emails anyway. Doesn't seem right and I want to use threading... maybe I like complex routines?
[Extra] I have something like: foreach(string email in emailAddresses) { MailMessage mailMessage = new MailMessage(); mailMessage.To.Add(...) ... SmtpClient client = new SmtpClient(); client.Send(mailMessage); }
I am trying to send System.Data.Datatable from a WCF service, to a C# Windows Forms application. When I execute, I get follwowing message:The maximum message size quota for incoming messages (65536) has been exceededThe datatable I am trying to send can get quite large. What would be the best approach to send the DataTable across without hitting message size limit, or in other words, what are ways around this problem?
I have a form with 10 file inputs. They can contain 10 random files with random sizes. If I send these files to ASP.NET server with this code:
var count = HttpContext.Current.Request.Files.Count; var TotalSize = 0; for (int i = 0; i < count; i++ ) { HttpPostedFile postedFile = HttpContext.Current.Request.Files.Get(i); TotalSize += postedFile.ContentLength; }
And as you can see I didn't save the files on the server, will this code just calculate the summary of files without need to receive the whole file from the client (And therefore it would be very fast)?
I have problem in my asp.net application. I have some file in floder (PDF, .doc, ,txt ) i want to open these files in my web browser .
Now my problem is large PDF files are not opeing in my browser even some less size pdf files are opeing prefectly and other files are also working good.
The following code i have wriiten to open the file
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 am trying to solve a problem that involves creating a very large XML string and stream that to browser. Right now i am using stringbuilder class. Here is the sample code
here i am using only just one property.
[code]....
total length of the final string will be 120MB or so.
With this code i am getting out of memory errors intermittently. To resolve this issue ..i am planning to create a HTTP handler for streaming XML output to browser.
We use the MojoPortal to a website and have some problems to upload files that is around 100 MB with the upload module. (Pleas note that this has probably nothing to do with MojoPortal but with the ASP.NET and the IIS)
The MojoPortal is set to use regular file Upload(not Neat Uploader) and to be able to upload big files we have set the following :
The problem is that the upload will cacel after a couple of minuts (Aborted).
Is there any other values that I need to set to make this possible? The MojoPortal itself should not have any settings for this as far as I know so its regular ASP.NET 4.0.
Anyone got some good pointers at an open source (article for creating your own would even be better) component to upload large files.SlickUpload for instance works great, and surely worth the money, but as this is for a pet project, a paid solution is just not what I'm after.
I am building a website where i need a page where user can upload large video files, i have created WCF service with streaming but i am calling that WCF service from Button_Click event of web page.
I have used below mentioned article for WCF service creation
WCF Streaming
I have used streaming as it should be efficient and should not be buffered in memory of server.
Now questions
1) I am having doubts that the entire file is uploaded to the web server and then it is transferred to WCF Service server...if this is true then i am not getting advantage of streaming as well as iis and web server will be down very soon if user uploads large file or multiple user are uploading files con currently
2) Is there any other efficient way to do same operation with some other technique
EDIT :
If I am not calling WCF Service method from ASP .Net code in that case also it is transferring bytes to the web server which i have checked with HTTPFox
I have checked above thing with upload control and putting one button on UI whose click event is bound to one method in code behind.
So, still i am having that confusion that how data is transferred
Client Machine - Web Server (ASP .Net Application) - Service Server (WCF Service) Client Machine - Service Server (WCF Service)
NOTE : If i am putting a debug point on button_click and uploading 10 kb file it hits that in less then 1 sec. but if i am uploading 50 mb file then it is taking time.
I placed code of calling WCF service inside that button_click event
This works in other browsers but not in chrome. I am trying to allow users to upload large files and have an ajax call to update them on the progress of the file upload.
So a unique ID is generated on the client side and added to the action of the form before sending. Then the form is submitted (form only contains a file upload input) and an ajax call is made to get the progress of the upload. The ajax call goes to another page and uses the ID to lookup the upload.
I am using JQuery 1.5.1. Debugging this and putting something on the error function give me nothing other than "error". Not very helpful. I used Chrome's debugger and it just says failed to load resource xxxx.aspx. xxx.aspx is the URL i needed. Turns out that there seems to be some sort of conflict between the form and the ajax call.