没有合适的资源?快使用搜索试试~ 我知道了~
AspNET上传大文件的NeatUpload中文文档
5星 · 超过95%的资源 需积分: 9 12 下载量 38 浏览量
2013-08-25
11:26:59
上传
评论
收藏 265KB DOC 举报
温馨提示
试读
34页
最近做项目要上传超过100M的大文件,本人水平有限,翻译了80%的neatupload文档
资源推荐
资源详情
资源评论
NeatUpload 手册
1 介绍
NeatUpload 的 ASP.NET 的组件允许开发者上传的文件流存储到磁盘或者数
据库中,并允许用户监控上传进度。它是开源的并且在 Mono’sXSP 或者
mod_mono 下工作就像微软的 ASP.NET 的实现。
NeatUpload 包含七个自定义控件、一个 HttpModule(上传的 HttpModule)和
一个页面子类(进度监控页面)。七个自定以控件是 InputFile(单文件上传空间)、
MultiFile(多文件上传控件)、ProgressBar(进度条控件)、UnloadConfirmer(取消上
传确认控件)、HiddenPostBackID(隐藏回发 ID 控件)、DetailsSpan(详细内容放在
Span 中的控件)和 DetailsDiv(详细内容放在 Div 中的控件)。本节简要介绍了它
们每个做什么,以及它们之间的关系。本手册的其余部分介绍了如何安装和使
用 NeatUpload。
InputFile 是一个自定义控件,它在 HtmlInputFile 中呈现,但提供了访问上
传文件的客户端定义的名称、内容和 MIME 类型,以及将文件移动到永久位置
的方法。MutileFiles 也是一个类似于 InputFile 的自定义控件,它支持同时上传
多个文件,并且可以制定空间的外观。
自定义控件 ProgressBar,负责提供上传文件的进度状态。它提供了一个属
性来控制进度条以内嵌显示或者以弹出式窗口显示。它还提供了控制按钮,使
进度显示,并开始刷新进度条的方法。如果进度条内嵌显示,进度条控件就作
为一个 IFRAME 渲染。否则,进度条就在新的弹出式窗口中的 DIV 中显示,该
窗口包含一个“检测上传进度”的链接,和一些当页面加载时移除 DIV 的
JavaScript 脚本。JavaScript 不可用时,这提供了一个备用。注意,进度条本身
并不显示进度。它只是提供了一个位置(一个 IFRAME 或者弹出式窗口),该
位置从 ProgressPage(缺省的是 Progress.aspx)加载页面。ProgressPage 的子类
显示进度条。
自定义控件 UnloadConfirmer 的作用是,当用户试图中断上传时,给予用户
一个确认对话框。
HiddenPostBackID 告诉 NeatUpload 数据流,来自页面上存储的所有上传
的文件的控件,这些控件也包括标准的 ASP.NET 上传控件。
UploadHttpModule 是一个 HttpModule,它能拦截 HTTP 请求,
InputFile/MultiFile 文件流上传到临时文件夹,并且对剩余的请求做大小限制。
默认的情况下,UploadHttpModule 截获所有的请求。因此,甚至不包含
NeatUploadcontrols 的页面也能导致 NeatUpload 出现错误。出于这个原因,
可以只对使用(或者没有使用)了 InputFile,MutilFile 和 ProgressBar 的页面,
配置 NeatUpload 时用 UploadHttpModule。当没有配置 UploadHttpModule 来
发上传文件的请求时,NeatUpload 得到文件是从 ASP.NET 标准的
HttpRequest 的属性 Files 中获得文件,而不是截获请求。这意味着,InputFile
的功能就会像 HttpInputFile 控件,但是没有进度条显示,这大大降低了采用
NeatUpload 的风险。
ProgressPage,是 System.Web.UI.Page 的子类,同时也是提供
ProgressBar 控件的页面(例如包含 IFRAME 或者弹出窗口的页面)的父类。
Progress.aspx 默认就是 ProgressPage。ProgressPage 从 UploadHttpModule
中获得上传进程的详细信息,并且把这些信息应用到子类的数据绑定表达式中。
ProgressPage 的子类(例如 Progress.aspx)放置着 DetailsSpan 和
DetailsDiv 数据绑定控件,使得 NeatUpload 能使用 AJAX 技术在没有刷新浏览
器的情况下,来更新控件中的值。
1.1 要求
使用 NeatUpload 有如下要求:
(1) .NET Framework(1.1,2.0,3.0,3.5,4.0,4.5 或者更高),或者 Mono(1.1 或者
1.2)。Mono 用户使用的 mod_mono Apache 模块应该使用 mod_mono 1.1.14 或者
更高版本。
(2)一个可工作的 WEB 应用程序
(3)无论是“完整”的信任托管环境,或者至少是“中等”的信任托管环境,如果
NeatUpload 被安装在 GAC 或者被例如.NET4 的<fullTrustAssemblies>元素中。
ASP.NET 默认情况下是“完整”级别的信任托管环境,但是某些托管服务提供商
迫使 WEB 应用程序运行在“中等”信任托管环境。
1.2 品牌,许可和商标
一些 NeatUpl oa d 控件显示一个“来自 NeatUpload” 的商标,除非你正在
使用的版本有人来修改去删除这个品牌。这个品牌的设计鼓励你通过一下方式
为 NeatUpl oa d 做贡献:
(1)让品牌传播 NeatUpload 这个词。
(2) 在未来,如果你对 NeatUpload 足够熟悉,那么你就有能力在你贡献的
代码中找到并删除的品牌
(3)为 NeatUpload 做出非钱财的贡献,比如修复一个 bug,帮助测试,或者
手动翻译文档,那么,作为回报我会提供一个移除商标的版本。
(4)在这里,你可以支付 400 美元,购买商标帮助 NeatUpload 基金的发展。
一旦我收到付款,我会向您发送一个已经移除商标的 NeatUpload 版本。注意,
没有商标的版本不提供保修(带商标的也不提供保修),并且我不提供退款。所
以,您应该确保带商标的版本能够在您的应用程序中正常工作的情况下,再购
买移除商标的版本。当然,如果你有任意一个版本的问题,请让和我联系。
带品牌和不带品牌的版本都在 GNU 公共许可证下授权。二者的唯一区别就
是品牌是否存在。这以为着你可以合法地将移除商标的版本重新分配在符合
LGPL 要求的情况下。注意,NeatUpload 是一个商标,它融合了我发布的代码
和我的支持。因此,在未经我批准的情况下,不允许你以我的名义在分配移除
商标的版本(或者任何一个版本的衍生),例如,不能叫它为“没有商标的
NeatUpload”或者说“基于 NeatUpload”,因为我不想从使用它的人的请求获得支
持。
总之,如果您使用的带有商标的 NeatUpload,您有几个选择来移除商标。
此外,您可以使用 NeatUpload,修改它(包括移除商标),并且在符合 LGPL 许可
证的条框的情况下,再分配它。这包括使用 NeatUpload 来完成你的商品或者服
务。但是,不提倡你,在未经我的授权,以我的名义来重新分配移除商标的
NeatUpload,因为这样做会削弱 NeatUpload 的商标。
我查看品牌 NeatUpload 作为一个实验,我很感兴趣,无论是正面和负面的
反馈。请发表您的意见,或直接给我发电子邮件。
1.3 版本编号
NeatUpload 的版本以 NeatUpload-主要版本号.次要版本号.补丁号的方式发
布。当我们比较版本时,主要和次要版本都相同,但是有着更高的补丁号(例如
1.1.4 与 1.1.3),以为着新版本包含已经修复了 bug 的组件或者新特征实现了一
些可选组件。在安装新版本时,就会有很小的风险,并且有时有显著的奖励。
相同的主要版本号,但是,有着更高的次要版本号(例如 1.2.补丁号 与 1.1.补丁
号),以为着新本版在现有组件的基础上添加新特征,并且向后的不兼容性也是
很轻微的。你应该不需要修改应用程序继续使用旧有功能,但您可能需要修改
使用的新功能。然而,你应该阅读发行说明,并且在您的应用程序升级后,做
好测试,以确保错误不会在无意中出现。较高的主号码(如 2.次要版本号.补丁
号与 1. 次要版本号. 补丁号)意味着新版本包含重大的变化,不向后兼容。根
据您的应用程序的功能,您可能会使用新版本来修改它。请查看发行说明细节。
2 NeatUpload1.3.x 的版本说明
2.1 从 NeatUpload1.2.x 和 1.1.x 升级到 1.3.x
NeatUpload1.3.x 的目标就是几乎完全向后兼容 NeatUpload1.2.x 和
NeatUpload1.1.x。请参阅下面的兼容性异常。要升级,首先要从 NeatUpload-
1.3.x/dotnet/app/bin/中拷贝 Brettle.Web.NeatUpload.dll,来替换掉现有应用程序
中的该类库;其次要从 NeatUpload-1.3.x/dotnet/app/NeatUpload/中拷贝所有文件
来替换掉你的应应用程序下的根目录的文件夹 NeatUpload 的所有内容。您还需
要禁用 Windows 身份验证和对 NeatUpload 文件夹启用匿名身份验证。
如果已经定制您的 Progress.aspx 页面,它可能在 NeatUpload1.3.x 下不用做
任何修改就能正常工作。但是,建议把您的变化合并到最新的版本中去,这样
做也困难。
如果您使用的是<neatUpload>配置部分,考虑将它从<system.web>部分移出,
并且在<neatUpload>的配置部分上添加属性 xmlns=’
http://www.brettle.com/neatupload/config/2008’描述。旧的位置<system.web>下仍
然支持,但是文档使用新的位置,并加入 xmlns 属性将在 Visual Studio 中提供
编写代码时的智能感知支持。
在 NeatUpload-1.3 中,仅仅有如下一些兼容性异常:
(1)对于 NeatUpload 文件夹,您应该禁用 Windows 身份验证,同时启用匿名
身份验证。
(2)现在 InputFile 控件是带有“商标”的,除非你用的版本,有人修改并删除
了商标。商标的意思是“来自 NeatUpload”。关于品牌以及去掉品牌的更多信息,
请参阅品牌,许可和商标。
(3)如果您不指定一个临时目录,系统就会使用
FileSystemUploadStorageProvider 类,在您的应用程序目录下创建 app_data/
NeatUpload_Temp 子目录,并且使用该目录。如果该目录存在或者可以被创建,
并且是可写入的,NeatUpload 将会使用它。否则,它会恢复到使用整个系统的
临时目录中的旧行为。这种变化是为了使更容易配置 NeatUpload 的环境中使用
中等信任级别。在这样的环境中,服务器管理员通常不希望给应用程序访问系
统范围的目录。如果没有这个变化,要想使得 NeatUpload 在这样的环境工作,
你就需要为 NeatUpload 明确指定一个目录。随着这种变化,你最需要创建
app_data/NeatUpload_Temp 文件夹,并且为运行应用程序账户赋予写入权限。
如果你不是在一个中等信任环境,你就根本不必这么做。NeatUpload 将可能不
能创建目录,并且将退回到使用整个系统的临时目录。
(4)现在,UploadException 不在是 HttpException 的一个子类,而是
Exception 的一个子类。这个变化是必要的,在一个花园与农场式的 Web 运行环
境中,允许 UploadExceptions 被序列化,使得异常被传递到进度条中。自定义
错误页面应该仍然工作,因为在上传期间,当发生 UploadException 错误时,现
在,NeatUpload 在 HttpException 中用相同 HTTP 状态代码包裹了
UploadException,并且抛出 HttpException 异常。
(5)当触发上传请求时,如果非文件部分超过了 maxNormalRequestLength 的
限制,现在,NeatUpload 就会抛出一个 NonfilePortionTooLargeException 异常来
代替一个 UploadTooLargeException 异常。
(6) 如果你使用 ASP.NET2.0 的主题,这些主题将被应用到默认的进度显示
页面(Progress.aspx)和样例自定义错误页(Error413.aspx)。
2.2 NeatUpload1.0.x 的升级
NeatUpload1.3.x 的目标是几乎完全向后兼容到 NeatUpload1.0.x。上面提到
的那些兼容性的唯一例外是,现在,ProgressBars 必须放在<form>元素的里面。
在几乎所有的情况下,这种例外情况将不是一个主要问题。
要升级,只需从 NeatUpload-1.3.x/dotnet/app/bin/中拷贝
Brettle.Web.NeatUpload.dll 来替换现有的,并且 NeatUpload-1.3.x/dotnet/app/
NeatUpload/文件夹中拷贝所有的文件来替换应用程序的 NeatUpload 文件夹下的
所有内容。如果您还没有定制 Progress.aspx 页面,您应该用 NeatUpload-1.3.x/
dotnet/app/NeatUpload/Progress.aspx 来替换您的应用程序中的该文件。如果您已
经定制了,就要考虑用使用新的<Upload:DetailsSpan>和<Upload:DetailsDiv>元
素,来利用 AJAX 无刷新页面的更新进度信息。请参阅定制 Progress.aspx 细节。
如果您从新编译,您将会看到一些过时的警告/过时的方法。这些方法可能
在 NeatUpload-1.2.x 中被删除了。我们鼓励您切换到它们的替代品,但是不是必
须是 NeatUpload-1.3.x。同样地,您被鼓励使用新的自定义配置节,来代替
NeatUpload-1.0.x 的 appSettings 配置节。老的 appSettings 配置节,一直能在
NeatUpload-1.3.x 中工作,但是,新的自定义配置节提供了更多的灵活性,包括
能够使用位置过滤以限制 NeatUpload 的请求簇。有关详细信息,请参阅配置。
2.3 NeatUpload-1.3 中的新特征
(1)对于 IIS7 的默认应用程序池(即集成管道模式)提供支持,使用的与
Darren Johnstore 的通用上传组件相同的技术。该技术使用反射来反问 ASP.NET
类的非公共成员,但是,我见过的任何技术,采用反射的最少。
(2)新增的多文件上传控件支持多文件上传。如果用户有 Flash 8 或者以上版
本,并且在兼容性浏览器中,他们也能够从一个单一文件选择对话框中选择多
个文件。该功能,已经在 IE7,Windows Firefox 3 和 Windows Safari 3 环境下,
测试通过,但是也应该能在支持使用 JavaScript 来调用 ActionScript 定义的透明
Flash 影音的浏览器中,正常工作。如果用户的浏览器(如 Opera 9 和 Linux
Firefox 2)不支持上述功能,那么每个对话框只能选择一个文件。开发者可以自
定义显示文件选择对话框的按钮和排队上传文件的自定义处理。
(3) 新增支持,如果您有 ASP.NET 配置共享服务器之间会话状态在您的
Web 花园或者 Web 农场环境下,那么 NeatUpload 就对一个 Web 花园或者 Web
农场提供支持。
(4) 新增支持,NeatUpload 在中等信任环境时,在安装 GAC 或 NET4.0 的环
境下,允许使用<fullTrustAssemblies>元素。
(5) 新增支持,使用 ProgressBar 来显示进度。这也可以用来显示一个长时
间运行的非上传文件的任务的进度信息。
(6) 新增一个 UploadConfirmer 控件。如果用户尝试离开上传页面或者重新
提交一个正在处理的上传,向用户显示一个确认对话框。
(7) 新增不使用 InputFile 也能上传文件。
(8) 新增限制上传文件的速率。
(9) 新增 API 和 SPI,使其能够使用相同的 IHttpModule 来编写新的控件。
新的 IHttpModules 能够和已经存在的控件与定制的 UploadStateStoreProviders 一
起工作,在不同的地点来保持上传状态。
(10) 新增,如果您的 Web 项目包括 NeatUploadConfig.xsd 的<neatUpload>元
素,并且使用标记<neatUpload
xmlns="http://www.brettle.com/neatupload/cong/2008" ...
>,就能支持代码智能感知。
(11) 重新排列目录结构,从事例应用程序中分离源代码,并且把大部分脚
剩余33页未读,继续阅读
资源评论
- enlove2014-02-06很好,努力学习中
坚定的追求者
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功