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没反应 展开
{
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没反应 展开
展开全部
首先,在你的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.注意文件上传后的重名问题。
2015-08-05 · 知道合伙人数码行家
关注
展开全部
文件上传
//做文件操作,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();
//做文件操作,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();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
string path = 竖仔Server.MapPath("~/attachment/"余斗汪销纳) + TextBox6.Text;
//可能是路径不对
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询