APS.Net 2.0 Large File Download
-
I have a pre-existing web application that moves files through HTTPS protocol between client and server. I have create an AJAX upload ( over 2 years ago so my knowledge of AJAX at the time was limited). Now I am re-visiting the application because I used the traditional methods for downloading a file ( code snippet below ). We have noticed that downloads of files that exceed 1 gig are killing our web server. My questions are: -How to handle a chunked downloads so I am not loading every bit into memory then sending it. -Has anyone used a purchased asp.net control that handles both Uploads/Downloads of large file(s) that they would recommend using.
try
{
if (File.Exists(fullFilePath))
{
using (StreamReader _streamReader = new StreamReader(fullFilePath))
{
using (Stream _stream = _streamReader.BaseStream)
{
Response.Clear();
Response.AddHeader("content-disposition",
String.Format("attachment;filename={0}", Path.GetFileNameWithoutExtension(fullFilePath)));
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.ContentType = DataAccess.GetMIMEType(Path.GetExtension(fullFilePath));
Response.BufferOutput = false;byte\[\] \_buffer = new byte\[1024\]; int \_counter = \_stream.Read(\_buffer, 0, 1024); while (\_counter > 0) { Response.OutputStream.Write(\_buffer, 0, 1024); \_counter = \_stream.Read(\_buffer, 0, 1024); } Response.End(); } }
}
}
catch (Exception)
{ }All comments will be helpful and appreciated, thank you.
I'm listening but I only speak GEEK.
-
I have a pre-existing web application that moves files through HTTPS protocol between client and server. I have create an AJAX upload ( over 2 years ago so my knowledge of AJAX at the time was limited). Now I am re-visiting the application because I used the traditional methods for downloading a file ( code snippet below ). We have noticed that downloads of files that exceed 1 gig are killing our web server. My questions are: -How to handle a chunked downloads so I am not loading every bit into memory then sending it. -Has anyone used a purchased asp.net control that handles both Uploads/Downloads of large file(s) that they would recommend using.
try
{
if (File.Exists(fullFilePath))
{
using (StreamReader _streamReader = new StreamReader(fullFilePath))
{
using (Stream _stream = _streamReader.BaseStream)
{
Response.Clear();
Response.AddHeader("content-disposition",
String.Format("attachment;filename={0}", Path.GetFileNameWithoutExtension(fullFilePath)));
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.ContentType = DataAccess.GetMIMEType(Path.GetExtension(fullFilePath));
Response.BufferOutput = false;byte\[\] \_buffer = new byte\[1024\]; int \_counter = \_stream.Read(\_buffer, 0, 1024); while (\_counter > 0) { Response.OutputStream.Write(\_buffer, 0, 1024); \_counter = \_stream.Read(\_buffer, 0, 1024); } Response.End(); } }
}
}
catch (Exception)
{ }All comments will be helpful and appreciated, thank you.
I'm listening but I only speak GEEK.
I assume you don't want to, or can't, just place a link to the file on your page? What about making a temp copy and giving a link to that?
only two letters away from being an asset
-
I have a pre-existing web application that moves files through HTTPS protocol between client and server. I have create an AJAX upload ( over 2 years ago so my knowledge of AJAX at the time was limited). Now I am re-visiting the application because I used the traditional methods for downloading a file ( code snippet below ). We have noticed that downloads of files that exceed 1 gig are killing our web server. My questions are: -How to handle a chunked downloads so I am not loading every bit into memory then sending it. -Has anyone used a purchased asp.net control that handles both Uploads/Downloads of large file(s) that they would recommend using.
try
{
if (File.Exists(fullFilePath))
{
using (StreamReader _streamReader = new StreamReader(fullFilePath))
{
using (Stream _stream = _streamReader.BaseStream)
{
Response.Clear();
Response.AddHeader("content-disposition",
String.Format("attachment;filename={0}", Path.GetFileNameWithoutExtension(fullFilePath)));
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.ContentType = DataAccess.GetMIMEType(Path.GetExtension(fullFilePath));
Response.BufferOutput = false;byte\[\] \_buffer = new byte\[1024\]; int \_counter = \_stream.Read(\_buffer, 0, 1024); while (\_counter > 0) { Response.OutputStream.Write(\_buffer, 0, 1024); \_counter = \_stream.Read(\_buffer, 0, 1024); } Response.End(); } }
}
}
catch (Exception)
{ }All comments will be helpful and appreciated, thank you.
I'm listening but I only speak GEEK.
-
To download a file, just give them a link as the previous post suggested Or do you have any special requirements?
Alexei Rodriguez
Restrictions: -Firewall restrictions will not allow me to pass specific file types. -Upon upload the file is appended with a hashed value as a file extension (to prevent execution of uploaded files). -Currently I have a getFile.aspx?file-id=[id] that returns the file. My understanding of a hyperlink via [filename] vs. [getFile.aspx]: -[filename]: allows IIS to handle the transfer of the file (more efficient of the 2 choices). -[getFile.aspx]: is not registered with IIS so it is managed at the code level. Is my understanding correct?
I'm listening but I only speak GEEK.
-
Restrictions: -Firewall restrictions will not allow me to pass specific file types. -Upon upload the file is appended with a hashed value as a file extension (to prevent execution of uploaded files). -Currently I have a getFile.aspx?file-id=[id] that returns the file. My understanding of a hyperlink via [filename] vs. [getFile.aspx]: -[filename]: allows IIS to handle the transfer of the file (more efficient of the 2 choices). -[getFile.aspx]: is not registered with IIS so it is managed at the code level. Is my understanding correct?
I'm listening but I only speak GEEK.
-
AreJay wrote:
-Firewall restrictions will not allow me to pass specific file types.
What would happen if you change the extension of files befre being downloaded via a hyperlink??
Alexei Rodriguez
This would work but I still run into the content/type restrictions which could be changed prior to download. This creates a new issues: -How to update filename and file type once it file reaches the client's PC. I am unable to rely on the client to have the ability to rename the file (half the time they don't know where it went once it was downloaded). I would accomplish his if I used an ActiveX control on the client's PC. Not an ideal solution but still plausible. I would prefer purchasing a control that handles all of this for me. I don't have allot of time available to me for this project and am looking for a quick fix. I also need to update the Upload functionality to allow multiple files and folder uploading so my thoughts where to purchase a control that kills multiple birds with one stone. Thanks for all your assistance in helping me come to a solution.
I'm listening but I only speak GEEK.