欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

怎么样在ASP.NET 2.0中使用FileUpload上传文件

来源:本站整理 作者:佚名 时间:2016-10-20 TAG: 我要投稿

到目前为止,我们的教程围绕的是text数据。然而,很多应用程序既需要处理text数据,也需要处理二进制数据。比如招聘网站可能需要用户上传Word或PDF格式的简历。
 
注意:二进制数据有时候被称为“BLOB”(Binary Large OBject的缩写)。本教程我选择使用术语“binary data”,即使它和术语BLOB同意。
第1步: 添加Working with Binary Data教程页
我们先花一点时间在网站里创建一些页,这些页会在本教程里用到.先添加一个名为BinaryData的文件夹,然后添加如下页面.确保每页都选择了Site.master作为母板页.
Default.aspx
 FileUpload.aspx
 DisplayOrDownloadData.aspx
 UploadInDetailsView.aspx
 UpdatingAndDeleting.aspx

 图1:添加所需要的页面
象其它文件夹一样,BinaryData文件夹里的Default.aspx 用来列出教程章节.记得SectionLevelTutorialListing.ascx 这个用户控件提供了这个功能.因此,从解决方案浏览里将这个用户控件拖到页面上.

 图2:添加SectionLevelTutorialListing.ascx 用户控件 到Default.aspx
最后,将这些页的地址加到 Web.sitemap 的条目里.在Enhancing the GridView 之后添加下面的标记.
 title="Working with Binary Data"
 url="~/BinaryData/Default.aspx"
 description="Extend the data model to include collecting binary data.">
 
 
 title="Uploading Files"
 url="~/BinaryData/FileUpload.aspx"
 description="Examine the different ways to store binary data on the
 web server and see how to accept uploaded files from users
 with the FileUpload control." />
 
 title="Display or Download Binary Data"
 url="~/BinaryData/DisplayOrDownloadData.aspx"
 description="Let users view or download the captured binary data." />
 
 title="Adding New Binary Data"
 url="~/BinaryData/UploadInDetailsView.aspx"
 description="Learn how to augment the inserting interface to
 include a FileUpload control." />
 
 title="Updating and Deleting Existing Binary Data"
 url="~/BinaryData/UpdatingAndDeleting.aspx"
 description="Learn how to update and delete existing binary data." />
修改完Web.sitemap后,在浏览器里看一下本教程站点。

 图3:Site Map包含了本教程
第2步:将二进制数据存储在什么地方
有2种方式存放二进制数据:一种是将其存储在服务器的文件系统里,并将文件路径存储在数据库里;第二种是直接将其存储在数据库里(见图4)。2种方法各有其优点和缺点。

 图4:可以将二进制数据存储在文件系统或直接放在数据库
假设我们对数据库Northwind进行扩展,每个产品对应一幅图片。一种方法是在服务器文件系统存储这些图片,然后在表Products里记录该图片的文件路径。为此,我们要在
 Products表里添加一列,名为ImagePath,类型是varchar(200)。假设用户为产品Chai上传一张图片时,图片可能存放在服务器文件系统的~/Images/Tea.jpg?www.myhack58.com位置。这里,~代表应用程序的物理位置。也就是说,如果该网站根植于C:/Websites/Northwind/的话,~/Images/Tea.jpg?www.myhack58.com相当于C:/Websites/Northwind/Images/Tea.jpg?www.myhack58.com 。上传图片后,我们应在表Products更新记录Chai,使其ImagePath列引用图片的路径。如果我们决定将所有产品的图片放在应用程序的Images文件夹,我们可以使用“~/Images/Tea.jpg?www.myhack58.com”或“Tea.jpg?www.myhack58.com”来表示。
将二进制数据放置在文件系统的主要优点在于:
1. 执行方便——就像我们即将看到的那样,将二进制数据直接放置在数据库和存储于文件系统相比,当用户需要存储并获取数据时需要更多的代码。另外,为使用户查看或下载数据,必须用到定位于该数据的URL(译注:统一资源定位器)。如果数据存储在文件系统,URL是直观明了的;如果是存储在数据库里,则必须创建一个页面来获取并返回数据。
2.访问范围宽——其它的服务或程序有时需要访问二进制数据,但当二进制数据存储在数据库中时,这些服务或程序便无法访问了。比如,用户可能希望通过FTP来访问每个产品对应的图片,在这种情况下,最好将其放置在文件系统。
3.更好的执行效能——将二进制数据放置在文件系统和数据库相比,在数据库服务和服务器服务之间的查询和网络堵塞情况要少一些。
将二进制数据放置在文件系统的主要缺点在于削弱了数据的关联性。比如我们从表Products删除一条记录时,放在文件系统中的相关文件不会自动删除,因此我们必须手写代码将其删除。不然的话,随着文件碎片的慢慢积累,文件系统会变的混乱不堪。另外,对数据库的任何改动,都要对在文件系统里的相应二进制数据做修改。比如将数据库转移到另外的站点或服务器时便面临这种挑战。

[1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载