上传下载这些东西太经常用到了,总结一下好了。
思路:利用.NET提供的丰富的控件库里的控件:fileUpLoad,文件选择框,然后放置一个确定按钮,操作上传文件,在该确定按钮里做操作:验证文件类型,重写文件名,保存,然后删除同名文件。下载的话:找到文件所在地址,获得服务器所在的物理路径,设置输出类型,指定编码格式,添加到输出流,然后实现下载。
上传:前台页面存在两个控件:fileUpLoad和一个按钮:
<asp:FileUpload ID="fuImg" runat="server" CssClass="border" Width="160px" />
<asp:Button ID="BtnEditOK" runat="server" Text=" 完成保存 " OnClick="BtnEditOK_Click" />
后台代码:
protected void BtnEditOK_Click(object sender, EventArgs e)
{
string[] extens = new string[] { ".jpeg", ".bmp", ".png", ".gif", ".jpg" };
//如果有文件
if (fuFile.HasFile)
{
string fileName = fuImg.FileName;
string ext = Path.GetExtension(fileName);
//验证文件格式
if (extens.Contains(ext))
{
//生成以时间为随机数的新文件名
string newName = DateTime.Now.ToString("yyyyMMddHHmmss") + DateTime.Now.Millisecond.ToString() + "_" + new Random().Next(10, 99).ToString() + ext;
string path = HttpContext.Current.Server.MapPath("~/Files/"); //保存到项目根目录Files文件夹下
fuFile.SaveAs(path); //保存
}
else
{
JScript.Alert("图片格式不正确,支持.jpeg、.bmp、.png、.gif、.jpg几种格式!", Page);
return;
}
}
}
下载:假设在这里有一个model下载对象,它有一个属性是文件名 ,而在这里,我原来是把文件存在项目根目录Files文件夹下面的
string filename = model.DownLoadUrl; //文件名
string url = "~/Files/" + filename; //文件下载地址
//要下载的文件服务器物理路径
string filePath = Server.MapPath(url);
//设置输出类型
Response.ContentType = "application/octet-stream";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
//将Http头添加到输出流 指定下载文件的名称
Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename);
//将指定的文件直接写入输出流,而不在内存中缓存该文件
Response.TransmitFile(filePath);
完成!
来源:https://www.cnblogs.com/ZQiuMei/archive/2012/12/29/2838463.html