1 Star 1 Fork 1

kangyu1122 / 文件下载管理平台

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
DownLoadFiles.aspx.cs 6.72 KB
一键复制 编辑 原始数据 按行查看 历史
kangyu1122 提交于 2020-09-29 14:37 . 作者第一次上传
using System;
using System.Collections.Generic;
using System.Data.OleDb;
using System.IO;
//using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FileManagerApp
{
public partial class DownLoadFiles : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
//DownFile(HttpUtility.UrlDecode(Request.QueryString["FilePath"].ToString(), System.Text.Encoding.UTF8), HttpUtility.UrlDecode(Request.QueryString["FileName"].ToString(), System.Text.Encoding.UTF8));
DownLoadFile(HttpUtility.UrlDecode(Request.QueryString["FilePath"].ToString(), System.Text.Encoding.UTF8));
}
catch (Exception ex)
{
Response.Write(ex.Message);
Response.Flush();
Response.End();
}
}
private void DownFile(string FilePath, string FileName)
{
//WriteLog(FilePath);
string fileName = FileName;//客户端保存的文件名
string filePath = Server.MapPath("Files/" + FilePath);//路径
//以字符流的形式下载文件
//FileStream fs = null;
//byte[] bytes=null;
try
{
FileInfo fi = new FileInfo(FilePath);
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
//fs = new FileStream(filePath, FileMode.Open);
//bytes = new byte[(int)fs.Length];
//fs.Read(bytes, 0, bytes.Length);
Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
//Response.AppendHeader("Content-Length", fi.Length.ToString());
Response.WriteFile(filePath);
Response.Flush();
Response.End();
}
catch (Exception ex)
{
Response.Write(ex.Message);
Response.End();
}
finally
{
//fs.Close();
}
}
/// <summary>
/// 使用OutputStream.Write分块下载文件,参数为文件绝对路径
/// </summary>
/// <param name="FileName"></param>
public void DownLoadFile(string filePath)
{
string filePaths = Server.MapPath("Files/" + filePath);
string file_name = HttpUtility.UrlEncode(Path.GetFileName(filePaths));
//指定块大小
long chunkSize = 204800;
//建立一个200K的缓冲区
byte[] buffer = new byte[chunkSize];
//已读的字节数
long dataToRead = 0;
FileStream stream = null;
try
{
//打开文件
stream = new FileStream(filePaths, FileMode.Open, FileAccess.Read, FileShare.Read);
dataToRead = stream.Length;
//添加Http头
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachement;filename=" + file_name);
HttpContext.Current.Response.AddHeader("Content-Length", dataToRead.ToString());
while (dataToRead > 0)
{
if (HttpContext.Current.Response.IsClientConnected)
{
int length = stream.Read(buffer, 0, Convert.ToInt32(chunkSize));
HttpContext.Current.Response.OutputStream.Write(buffer, 0, length);
HttpContext.Current.Response.Flush();
//HttpContext.Current.Response.Clear();
buffer = new Byte[chunkSize];
dataToRead = dataToRead - length;
}
else
{
//防止client失去连接
dataToRead = -1;
}
}
WriteLog(filePath, file_name);
}
catch (Exception ex)
{
throw ex;
//HttpContext.Current.Response.Write("Error:" + ex.Message);
}
finally
{
if (stream != null)
{
stream.Close();
}
HttpContext.Current.Response.Close();
}
}
/// <summary>
/// 写入下载日志
/// </summary>
/// <param name="file_name"></param>
/// <param name="file_id"></param>
private void WriteLog(string file_path,string file_name)
{
string user_id = string.Empty;
try
{
user_id = HttpUtility.UrlDecode(Request.Cookies["USERID"].Value).Split('|')[0];
}
catch { }
finally
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("./") + "db.mdb"); //Jet OLEDB:Database Password=
try
{
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandText = "insert into EI_FILE_DOWNLOAD_LOG_T values( '" + Guid.NewGuid().ToString() + "','" + file_name + "','" + PublicVarClass.UserID + "','" + GetIPAddress() + "',now(),'"+file_path+"')";
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex) { }
finally
{
conn.Close();
conn.Dispose();
}
}
}
#region 获取IP地址
/// <summary>
/// 获取IP地址
/// </summary>
/// <returns></returns>
public string GetIPAddress()
{
string userIP = string.Empty;
HttpRequest request = HttpContext.Current.Request;
//如果使用代理,获取真实IP
if (request.ServerVariables["HTTP_X_FORWARDED_FOR"] != "")
{
userIP = request.ServerVariables["REMOTE_ADDR"];
}
else
{
userIP = request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
if (userIP == null || userIP == "")
{
userIP = request.UserHostAddress;
}
return userIP;
}
#endregion
}
}
C#
1
https://gitee.com/kangyu1122/FileManagerApp.git
git@gitee.com:kangyu1122/FileManagerApp.git
kangyu1122
FileManagerApp
文件下载管理平台
master

搜索帮助