后台代码:
private void Button1_ServerClick(object sender, System.EventArgs e)
{
HttpFileCollection files = HttpContext.Current.Request.Files;
for (int iFile = 0; iFile < files.Count; iFile++)
{
HttpPostedFile postedFile = files[iFile];
string fileName,newfilename, fileExtension,filepath,savefilepath;
fileName = System.IO.Path.GetFileName(postedFile.FileName);
if (fileName != "")
{
fileExtension = System.IO.Path.GetExtension(fileName);
newfilename=System.DateTime.Now.ToString("yyyyMMddhhmmssffff")+fileExtension;
filepath=System.Web.HttpContext.Current.Request.MapPath("files/") + newfilename;
savefilepath="files/"+newfilename;
postedFile.SaveAs(filepath);
insert(fileName,savefilepath,fileExtension);
}
}
}
插入到数据库:
private void insert(string filename,string filepath,string fileExtension)
{
DataTable dt=new DataTable();
dt.Columns.Add("filename",typeof(string));
dt.Columns.Add("filepath",typeof(string));
dt.Columns.Add("fileExtension",typeof(string));
dt.Columns.Add("uploaddate",typeof(System.DateTime));
DataRow dr=dt.NewRow();
dr["filename"]=filename;
dr["filepath"]=filepath;
dr["fileExtension"]=fileExtension;
dr["uploaddate"]=System.DateTime.Now.ToString();
dt.Rows.Add(dr);
this.repdown.DataSource=dt;
this.repdown.DataBind();
}
/*下载*/
private void downloadfile(string name,string path)
{
/*WriteFile实现下载
FileInfo fileInfo = new FileInfo(Server.MapPath(path));
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(name));
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.AddHeader("Content-Transfer-Encoding", "binary");
Response.ContentType = "application/octet-stream";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.WriteFile(fileInfo.FullName);
Response.Flush();
Response.End();
*/
System.IO.Stream iStream = null;
byte[] buffer = new Byte[10000];
int length;
long dataToRead;
string filepath = Server.MapPath(path);
string filename = System.IO.Path.GetFileName(filepath);
try
{
iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,
System.IO.FileAccess.Read,System.IO.FileShare.Read);
dataToRead = iStream.Length;
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename));
while (dataToRead > 0)
{
if (Response.IsClientConnected)
{
length = iStream.Read(buffer, 0, 10000); //每次读取 10K
Response.OutputStream.Write(buffer, 0, length);
Response.Flush();
buffer= new Byte[10000];
dataToRead = dataToRead - length;
}
else
{
dataToRead = -1;
}
}
}
catch (Exception ex)
{
Response.Write("Error : " + ex.Message);
}
finally
{
if (iStream != null)
{
iStream.Close();
}
}
}