c#实现文件上传

protectedvoidButton2_Click(objectsender,EventArgse){if(TextBox6.Text!=""){//获取文件路径str... protected void Button2_Click(object sender, EventArgs e)
{
if (TextBox6.Text != "")
{
//获取文件路径
string path = Server.MapPath("../attachment/") + TextBox6.Text;
//初始化 FileInfo 类的实例,它作为文件路径的包装
FileInfo fi = new FileInfo(path);
//判断文件是否存在
if (fi.Exists)
{
//将文件保存到本机上
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(fi.Name));
Response.AddHeader("Content-Length", fi.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.Filter.Close();
Response.WriteFile(fi.FullName);
Response.End();
}
}
else
{
Response.Write("<script>alert('没有附件!')</script>");
}
为什么点了下载的Button没反应
展开
 我来答
牧灵职务
2014-08-18 · TA获得超过223个赞
知道答主
回答量:112
采纳率:87%
帮助的人:47.4万
展开全部
首先,在你的VisualC#webproject中增加一个上传用的WebForm,为了要上传文件,需要在ToolBox中选择HTML类的FileField控件,将此控件加入到WebForm中,然而此时该控凯桥件还不是服务端控件,我们需要为它加上如下一段代码:<inputid=uploadfile1type=filesize=49runat=server>,这样它就成为服务端控件了,如果庆孙宏需要同时上传数个文件时,我们可以相应增加此控誉册件。 需要注意的是代码中一定要把<form>的属性设置成为: <formmethod=postencType=multipart/form-datarunat=server> 如果没有这个属性,就不能实现上传。 然后在此WebForm中增加一个WebForm类的Button,双击Button添加如下代码: //上传图片的程序段 DateTimenow=DateTime.Now; //取现在时间到DataTime类的对象now中 stringstrBaseLocation=D:\\web\\FC\\pic\\; //这是文件将上传到的服务器的绝对目录 if(uploadfile1.PostedFile.ContentLength!=0)//判断选取对话框选取的文件长度是否为0   {uploadfile1.PostedFile.SaveAs(strBaseLocation+now.DayOfYear.ToString()+uploadfile1.PostedFile.ContentLength.ToString()+.jpg); //执行上传,并自动根据日期和文件大小不同为文件命名,确保不重复 Label1.Text=图片1已经上传,文件名为:+now.DayOfYear.ToString()+uploadfile1.PostedFile.ContentLength.ToString()+.jpg;  navigator.Insert(System.Xml.TreePosition.After,XmlNodeType.Element,pic1,,); navigator.Insert(System.Xml.TreePosition.FirstChild,XmlNodeType.Text,pic1,,); navigator.Value=now.DayOfYear.ToString()+uploadfile1.PostedFile.ContentLength.ToString()+.jpg; navigator.MoveToParent();} 上面的代码用于笔者开发的一个使用XML文件存储新闻信息的系统中,后面几句代码作用是写上传文件信息到XML文件中。如果要上传其他类型文件,只需要将jpg改为相应类型的后缀名即可,如改为doc即可上传Word文件,浏览器即可直接浏览上传的Word文件。 【注意事项】 1.上传文件不可以无限大; 2.要注意IIS的安全性方面的配合; 3.用VisualStudio的安装项目做安装程序的时候,请注意安装程序所在的绝对路径问题; 4.注意文件上传后的重名问题。
精品DIY生活
2015-08-05 · 知道合伙人数码行家
精品DIY生活
知道合伙人数码行家
采纳数:46447 获赞数:131770
视频剪辑、网络管理、图片处理、办公自动化、文学、语言学。

向TA提问 私信TA
展开全部
文件上传
//做文件操作,form标记必须有enctype="multipart/form-data"属性(ASP.NET会自动生成,但HTML控件必须手动添加)
HttpPostedFile hpf = FileUpload1.PostedFile;//获取上传的文件
//获取上传文件的大小
int len = hpf.ContentLength;//注意:以字节为单位
string type = hpf.ContentType;//上传文件的MIME类型
string fileName = Path.GetFileName(hpf.FileName);
Response.Write("文件大小:" + len + "<br/>" + "MIME类型:" + type + "<br/>" + "文件名:" + fileName);
//保存路径
//保存文件的全路径不能重名,否则,后上传的会覆盖前面的
string path = "UpLoadFiles\\" + DateTime.Now.Ticks + fileName;
//开始上传差谈
//FileUpload1.SaveAs(Server.MapPath(path));//SaveAs 方法是一次性把文件上传到服务器,不适合大文件上传,虚神碰不然服务器卡死
//应该用流来上传大文件
Stream s = hpf.InputStream;//把文件的数据读取到st流中
//创建一个文件流来把上传的文瞎芦件写入到服务器上
FileStream fs = new FileStream(path,FileMode.Create,FileAccess.Write,FileShare.Read);
byte[] buffer=new byte[1024];//缓冲区
int readLen;//每次真正读取到的字节数
while ((readLen=s.Read(buffer, 0, 1024))>0)
{
//读到数据了(此时独到的数据在buffer缓冲区中)
//开始把文件写入到服务器的磁盘中
fs.Write(buffer, 0, readLen);
}
fs.Flush();//请空缓冲区,使得所有缓冲区的数据都写入到文件中
s.Flush();
fs.Close();//关闭流,释放资源
s.Close();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨之快乐dca51ae
2014-08-18 · TA获得超过327个赞
知道小有建树答主
回答量:308
采纳率:33%
帮助的人:119万
展开全部
string path = 竖仔Server.MapPath("~/attachment/"余斗汪销纳) + TextBox6.Text;
//可能是路径不对
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式