Sie sind auf Seite 1von 4

ShowAttachmentsPage

private void ShowAttachemnts()


{
GetQueryString();
List<BllComplaints> lstAttachemnts = new List<BllComplaints>();
lstAttachemnts =
BllComplaints.getAttachmentsDetailsByAppIdAndDocId(_AppId,
_DocId);
if (lstAttachemnts != null && lstAttachemnts.Count > 0)
{
HyperLink arrLink = new HyperLink();
int i = 0;
foreach (BllComplaints lst in lstAttachemnts)
{
arrLink = new HyperLink();
arrLink.ID = "HyperLink" + i++;
arrLink.Text = lst.FileName;
arrLink.NavigateUrl = "~/IFrame/Download.aspx?file=" +
lst.DiskFileName;
divAttachments.Controls.Add(arrLink);
}
}
}

Download.aspx
1.Method
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Threading;
using System.Configuration;

public partial class IFrame_Download : System.Web.UI.Page


{
String strAttachmentsPath = String.Empty;
protected void Page_Load(object sender, EventArgs e)
{
strAttachmentsPath =
ConfigurationManager.AppSettings["AttachmentsPath"].ToString();
string filename = Request["file"].ToString();
fileDownload(filename, strAttachmentsPath + "\\" + filename);
}
private void fileDownload(string fileName, string fileUrl)
{
Page.Response.Clear();
bool success = ResponseFile(Page.Request, Page.Response, fileName,
fileUrl, 1024000);
//if (!success)
// Response.Write("Downloading Error!");
Page.Response.End();
}
public static bool ResponseFile(HttpRequest _Request, HttpResponse
_Response, string _fileName, string _fullPath, long _speed)
{
try
{
FileStream myFile = new FileStream(_fullPath, FileMode.Open,
FileAccess.Read, FileShare.ReadWrite);
BinaryReader br = new BinaryReader(myFile);
try
{
_Response.AddHeader("Accept-Ranges", "bytes");
_Response.Buffer = false;
long fileLength = myFile.Length;
long startBytes = 0;

int pack = 10240; //10K bytes


int sleep = (int)Math.Floor((double)(1000 * pack / _speed)) +
1;
if (_Request.Headers["Range"] != null)
{
_Response.StatusCode = 206;
string[] range = _Request.Headers["Range"].Split(new
char[] { '=', '-' });
startBytes = Convert.ToInt64(range[1]);
}
_Response.AddHeader("Content-Length", (fileLength -
startBytes).ToString());
if (startBytes != 0)
{
_Response.AddHeader("Content-Range", string.Format("
bytes {0}-{1}/{2}", startBytes, fileLength - 1, fileLength));
}
_Response.AddHeader("Connection", "Keep-Alive");
_Response.ContentType = "application/octet-stream";
_Response.AddHeader("Content-Disposition",
"attachment;filename=" + HttpUtility.UrlEncode(_fileName,
System.Text.Encoding.UTF8));

br.BaseStream.Seek(startBytes, SeekOrigin.Begin);
int maxCount = (int)Math.Floor((double)((fileLength -
startBytes) / pack)) + 1;

for (int i = 0; i < maxCount; i++)


{
if (_Response.IsClientConnected)
{
_Response.BinaryWrite(br.ReadBytes(pack));
Thread.Sleep(sleep);
}
else
{
i = maxCount;
}
}
}
catch
{
return false;
}
finally
{
br.Close();
myFile.Close();
}
}
catch
{
return false;
}
return true;
}
}

2.Method
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Threading;
using System.Configuration;

public partial class IFrame_Download : System.Web.UI.Page


{
String strAttachmentsPath = String.Empty;
protected void Page_Load(object sender, EventArgs e)
{
strAttachmentsPath =
ConfigurationManager.AppSettings["AttachmentsPath"].ToString();
string filename = Request["file"].ToString();
DownloadFile(strAttachmentsPath + "\\" + filename);
}
private void DownloadFile(string serverFilePath)
{
FileInfo file = new FileInfo(serverFilePath);

if (file.Exists == true)
{
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename="
+ file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(file.FullName);
Response.End();
}
}
}

Restrict Browser back button


protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
string strDisAbleBackButton;
strDisAbleBackButton = "<script language='javascript'>\n";
strDisAbleBackButton += "window.history.forward(1);\n";
strDisAbleBackButton += "\n</script>";
ClientScript.RegisterClientScriptBlock(this.Page.GetType(),
"clientScript", strDisAbleBackButton);
}

Das könnte Ihnen auch gefallen