注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

飞天心宏的博客

依稀旧梦似曾见,相逢只恨缘太迟

 
 
 

日志

 
 
关于我

出身数学,爱好文学,从事软件开发工作。一个阳光、幽默、热爱生活的男孩子,在追求理想的路上风雨无阻,勇往直前,崇尚“梦想有多远,我们就走多远”!

网易考拉推荐

浅谈文件上传控件FileUpload实现文件上传功能  

2008-03-29 16:05:26|  分类: C#编程参考 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
   

在日常网络中,很多时候我们都会用到上传这个功能,比如我们要上传一张照片,一个文档等等!操作很简单,只要点击“预览”然后选择本地要上传的文件,点击确定上传即可!那么这样一个功能在asp.net中是如何实现的呢?

我也是刚好用到了这个功能,就拿来和大家一起分享,如果有更好的方法还望指点一二!

这里我们谈谈实现上传的四个实例:(以下代码测试全部通过!)

1、  上传保存到指定路径

2、  上传保存到文件系统中针对应用程序的指定目录

3、  控制上传文件的大小

4、  控制上传文件的格式

一、我们先做一个最简单的实例:(不考虑其他因素,直接上传并保存到指定路径)

实例中用到一个FileUpload控件和一个button按钮,我们先只要在button中的Click事件中写如下代码:

protected void btnFileUpload_Click(object sender, EventArgs e)

        {

            string savePath = @"f:\";

            if (FileUpload1.HasFile)

            {

                string fileName = FileUpload1.FileName;

                savePath += fileName;

                FileUpload1.SaveAs(savePath);

                Response.Write("<script>alert('上传成功!')</script>");

            }

            else

            {

                Response.Write("<script>alert('上传失败!')</script>");

            }

      }

即可实现最基本的上传工作!对上面的代码进行说明一下:savepath表示的是保存路径,在判断语句中用HasFile属性来验证FileUpload控件确实存在文件,SaveAs 方法将上载的文件写到指定的目录最后是弹出对话框提示上传成功还是失败!

这时候有人就会问我不想指定路径,我想把文件直接保存到我应用程序的路径当中去该如何实现呢?

二、下面的一个例子就让我们来实现如何创建 FileUpload 控件,该控件将文件保存到文件系统中针对应用程序的指定目录?

页面不变,只需将代码改一点就可以了!

protected void btnFileUpload_Click(object sender, EventArgs e)

        {           

            string dir = @"uploadfile";

            string path = Request.PhysicalApplicationPath;

            if (FileUpload1.HasFile)

            {

                string savePath = path + dir + Server.HtmlEncode(FileUpload1.FileName);

                FileUpload1.SaveAs(savePath);

                Response.Write("<script>alert('上传成功!')</script>");

            }

            else

            {

                Response.Write("<script>alert('上传失败!')</script>");

            }

 

        }

该实现的主要思想就是:使用 HttpRequest..::.PhysicalApplicationPath 属性来获取当前正在执行的服务器应用程序的根目录的物理文件系统路径。调用 SaveAs 方法将文件保存到服务器上的指定路径。

三、当然我们在网站上传文件或照片的时候经常会碰见规定了上传的文件不能超过多大的空间(比如说1M),如果大于1M就不让你上传,那这又是如何实现的呢?下面我们就来实现一下!

这个就要用到 PostedFile 属性来访问基础 ContentLength 属性并返回文件的大小。通过比较上传文件和我们设定的大小,我们就可以控制最大上传文件的大小了。注意这里的ContentLength是以字节为单位计算的!代码如下:

protected void btnFileUpload_Click(object sender, EventArgs e)

        {

            string savePath = @"f:\";

            if (FileUpload1.HasFile)

            {

                int filesize = FileUpload1.PostedFile.ContentLength;

                if (filesize <1024)

                {

                    savePath += Server.HtmlEncode(FileUpload1.FileName);

                    FileUpload1.SaveAs(savePath);

                    Response.Write("<script>alert('上传成功!')</script>");

                }

                else

                {

                  Response.Write("<script>alert('你上传的文件不能大于1KB!')</script>");

                }

            }

            else

            {

                Response.Write("<script>alert('上传失败!')</script>");

            }

        }

四、如果你还想控制上传文档的类型(如word文档),我们就可以通过控制后缀(.doc 和 .docx)来实现!我们调用 Path..::.GetExtension 方法来返回要上载的文件的扩展名,然后和我们设置的后缀进行比较!代码如下:

protected void btnFileUpload_Click(object sender, EventArgs e)

        {

            string savePath = @"f:\";

            if (FileUpload1.HasFile)

            {

                string fileName= Server.HtmlEncode(FileUpload1.FileName);

                string extension = System.IO.Path.GetExtension(fileName);

                //假设我们只允许上传word文档

                if (extension == ".doc" | extension == ".docx")

                {

                    savePath += fileName;

                    FileUpload1.SaveAs(savePath);

                    Response.Write("<script>alert('上传成功!')</script>");

                }

                else

                {

                    Response.Write("<script>alert('上传失败,因为你上传的不是word文档!')</script>");

                }

            }

        }

 

以上只是介绍了FileUpdate控件的用法,还有更复杂的情况我们就不在这里说了!不足之处,敬请指正!

  评论这张
 
阅读(1728)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018