62,046
社区成员
发帖
与我相关
我的任务
分享
#region 文件下载
public bool DownLoadFile(string localPath, string hostURL, int byteCount, string userID, long cruuent)
{
bool result = true;
string tmpURL = hostURL;
byteCount = byteCount * 1024;
hostURL = tmpURL + "&npos=" + cruuent.ToString();
System.IO.FileStream fs;
fs = new FileStream(localPath, FileMode.OpenOrCreate);
if (cruuent > 0)
{
//偏移指针
fs.Seek(cruuent, System.IO.SeekOrigin.Current);
}
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(hostURL);
if (cruuent > 0)
{
request.AddRange(Convert.ToInt32(cruuent)); //设置Range值
}
try
{
//向服务器请求,获得服务器回应数据流
System.IO.Stream ns = request.GetResponse().GetResponseStream();
byte[] nbytes = new byte[byteCount];
int nReadSize = 0;
nReadSize = ns.Read(nbytes, 0, byteCount);
while (nReadSize > 0)
{
fs.Write(nbytes, 0, nReadSize);
nReadSize = ns.Read(nbytes, 0, byteCount);
}
fs.Close();
ns.Close();
}
catch(Exception ex)
{
LOG.Error("下载" + localPath + "的时候失败!" + "原因是:" + ex.Message);
fs.Close();
result = false;
}
return result;
}
#endregion
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" Text="下载" CommandArgument='<%#Eval("ID")%>'
CausesValidation="False" OnCommand="LinkButton1_Command"></asp:LinkButton>
</ItemTemplate>
protected void LinkButton1_Command(object sender, CommandEventArgs e)
{
//根据参数来获取文件的路径
string fileID = e.CommandArgument.ToString();
DM dm = new DM();
string strSQL = "select * from 你的表名 where ID=" + int.Parse(fileID);
string filePath = dm.getsql(strSQL).Tables[0].Rows[0]["文件URL"].ToString();
ClientScript.RegisterClientScriptBlock(GetType(), "", "<script>alert('" + filePath + "');</script>");
//添加根据文件路径来下载文件
FileStream fileStream = new FileStream(filePath, FileMode.Open);
long fileSize = fileStream.Length;
Context.Response.ContentType = "application/octet-stream";
//中文文件名需要UTF8编码
string fileName = filePath.Substring(filePath.LastIndexOf("\\") + 1);
Context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + "\"");
Context.Response.AddHeader("Content-Length", fileSize.ToString());
byte[] fileBuffer = new byte[fileSize];
fileStream.Read(fileBuffer, 0, (int)fileSize);
fileStream.Close();
Context.Response.BinaryWrite(fileBuffer);
Context.Response.End();
}