ASP.NET上传文件

妖精的绣舞 提交于 2020-02-06 10:01:32

  上传下载这些东西太经常用到了,总结一下好了。

思路:利用.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);

完成!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!