Introduction
In this
article we are going to learn the topic of how to download the files from
the asp.net application.
In Real time
example of user need to download the images . rar files ,log text files etc.,
Coding
Write the
below method for downloading the files
private bool
DownloadingFiles()
{
//File Path and File Name
string
filePath = Server.MapPath("~/");
string
_DownloadableProductFileName = "crackers.jpg";
System.IO.FileInfo FileName = new
System.IO.FileInfo(filePath + "\\" + _DownloadableProductFileName);
FileStream
myFile = new FileStream(filePath
+ "\\" +
_DownloadableProductFileName, FileMode.Open,
FileAccess.Read, FileShare.ReadWrite);
//Reads file as binary values
BinaryReader _BinaryReader = new BinaryReader(myFile);
//Check whether file exists in specified location
if (FileName.Exists)
{
try
{
long
startBytes = 0;
string
lastUpdateTiemStamp = File.GetLastWriteTimeUtc(filePath).ToString("r");
string
_EncodedData = HttpUtility.UrlEncode(_DownloadableProductFileName,
Encoding.UTF8) + lastUpdateTiemStamp;
Response.Clear();
Response.Buffer
= false;
Response.AddHeader("Accept-Ranges", "bytes");
Response.AppendHeader("ETag", "\""
+ _EncodedData + "\"");
Response.AppendHeader("Last-Modified", lastUpdateTiemStamp);
Response.ContentType
= "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;filename=" + FileName.Name);
Response.AddHeader("Content-Length", (FileName.Length -
startBytes).ToString());
Response.AddHeader("Connection", "Keep-Alive");
Response.ContentEncoding
= Encoding.UTF8;
//Send data
_BinaryReader.BaseStream.Seek(startBytes,
SeekOrigin.Begin);
//Dividing the data in 1024 bytes package
int
maxCount = (int)Math.Ceiling((FileName.Length
- startBytes + 0.0) / 1024);
//Download in block of 1024 bytes
int i;
for (i =
0; i < maxCount && Response.IsClientConnected; i++)
{
Response.BinaryWrite(_BinaryReader.ReadBytes(1024));
Response.Flush();
}
//if blocks transfered not equals total number of blocks
if (i
< maxCount)
return false;
return true;
}
catch
{
return false;
}
finally
{
Response.End();
_BinaryReader.Close();
myFile.Close();
}
}
else
System.Web.UI.ScriptManager.RegisterStartupScript(this, GetType(),
"FileNotFoundWarning", "alert('File is
not available now!')", true);
return false;
}
Call this
method in one button click method and proceed for downloading
No comments:
Post a Comment