时下比较流行的云盘,比如百度云盘,360云盘,金山快盘等等,相信大家都用过.云盘是互联网存储工具,是互联网云技术的产物,是通过互联网为企业和个人提供数据信息的存储,读取以及下载等服务,其最大的两个特点是安全稳定和海量存储.我的笔记本硬盘只有500g,有一天当我发现我的6个硬盘分区中红了4个,我就开始往我的百度云盘上”搬东西”,这个搬东西就是我们今天要谈到的”文件上传”.

其实文件上传在互联网应用和网站开发中十分常见,我们在各类社交软件中使用的”照片上传”,在各类考试网上报名时,要上传本人照片等等本质上都是文件上传,只不过这个文件是图片或者照片罢了.说了这么多只是想表示,文件上传的功能应用领域十分广泛,因此在web开发中也是一个非常重要的的技术.虽然我并不清楚,各类网盘的文件上传技术是如何实现的,但是我相信大致的原理是一样的.

最近在学习asp.net技术,今天就使用它来简单的模拟一下文件上传的功能,只是供学习参考而已,不作为商业开发技术使用,大家也别较真.下面来看具体的实现过程:

首先新建一个asp.net应用程序项目,然后添加一个web窗体,名称自己定.建好之后如下图所示:

vc/w2nkqtctkx9k7upzhc3c/2lz+ll3q1/zgawxlvxbsb2fkv9i8/i7l/nb30qrkx7x308pptc2zqvbjwltkr8dasb612lxezss8/iziu7rzzo2808nptksu1nrv4sdvztldx9k7tqjsqtdcvajsu7j2zss8/rzq08patltmtkk007/nu6e2y8nptku1xm7evp4sscji587s1nqzzndytctp7ss/zss8/s/c0mk9qmhl0ru49lvwrmlszc7evp680mjnz8lnvdwvcd4kpha+pgltzybzcmm9″/uploadfile/collfiles/20150104/20150104092504317.png” alt=”\”>

下面来看前台和后台的代码部分,鉴于只是举例,对于页面布局就不那么复杂了,就三个控件,先看页面代码

aspx.cs" inherits="inputfile.inputfile" %>






    文件上传


    
    

相应的页面后台代码如下:

  protected void button1_click(object sender, eventargs e)
        {
            //获取将要上传文件的绝对路径
            string fullfilename = this.fileupload1.postedfile.filename;
            //通过字符串截取函数将上传文件的文件名提出来
            string filename = fullfilename.substring(fullfilename.lastindexof("\\") + 1);
            //使用控件的方法保存文件到指定的文件夹中
            this.fileupload1.postedfile.saveas(server.mappath("upfile") + "\\" + filename);
        }

最后我们来看运行结果的界面,我分别上传图片,文档和视频文件以及其他的一些其他格式的文件,比如zip压缩文件等,来测试能能否上传成功.无论是什么格式文件都可以上传,只是在测试中出现了一个问题,那就是大文件的处理。

当然在测试的过程中,当我上传一个20多m的视频文件时,报错了,至于更大的文件,那就无法完成了。

上网找了找解决方法,发现是控件对文件大小有一个限制,默认是4m,如何修改呢?很简单,只需要在配置文件web.config的system.web中的httpruntime标签中作如下设置即可:

maxrequestlength指示asp.net 支持的最大文件上载大小。该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以 kb 为单位。默认值为 4096kb (4 mb)。

executiontimeout指示允许执行请求的最大时间,以秒为单位,默认90秒

小结:这是一个特别简单的例子,但是却是一个特别有用的东西,不论技术多么的高超,都是在这些的基础上变得更加完美的。因此打好基础很重要。