在上一篇中介绍了如何在ASP.NET中配置和使用SlickUpload控件,在这一篇周公将讲述关于SlickUpload的一些复杂配置,使其尽量满足我们复杂的业务逻辑。
在web.config文件中有个<slickUpload>节点,这个节点有有关SlickUpload的常见配置。
上传文件到服务器
如果我们要上传文件到服务器硬盘,可以配置如下(这个其实是周公在上一篇中的配置):
对这个节点的属性说明如下:
type属性(必需属性):表示上传的文件保存到服务器硬盘。
location属性(必需属性):上传文件的保存位置,在上面的配置中是保存到网站根目录下的Files目录下(“~/”是ASP.NET网站的根目录),注意需要对应目录的读写权限。
existingAction属性(可选属性):指示当上传名称的文件如何处理,有Exception、Overwrite及Rename三个可能值,分别表示抛出异常、覆盖及重命名(添加一个数字后缀)处理。
fileNameMethod属性(可选属性):指示上传的文件将以何种名称方式保存到服务器硬盘,有可选值:Client、Guid及Custom。分别表示保持客户端的名称不变、使用随机生成的GUID作为文件名(可以确保不会重复)及自行指定文件名。
fileNameGenerator属性(可选属性):如果配置了fileNameMethod="Custom"就需要指定这个属性,这个属性的值是一个class的名称,这个名称是一个实现了Krystalware.SlickUpload.Providers.IFileNameGenerator接口的类,这个接口有一个待实现的方法GenerateFileName(UploadedFile file)。在上一篇的示例中周公在Web项目中的App_Code中添加了一个名为MyFileNameGenerator(这个类如果带有命名空间,则需要带命名空间指定,如NetSkycn.MyFileNameGenerator),在这里代码周公想实现的是在上传的文件后添加文件上传时间后缀,代码如下:
这样,当客户端上传一个“严厉打击伪国产软件.doc”的文件到服务器时,将可能会保存成“严厉打击伪国产软件2010-07-25_112533.doc”。
客户端编程支持
限制最大可上传文件个数
可以设置控件的MaxFiles属性,如下就是限制每次最多上传5个文件:
如何在客户端操作SlickUpload控件的客户端控件
假如你SlickUpload服务器控件的ID是slickUpload,那么在客户端可以通过如下方式:
限制至少上传一个文件
下面以结合CustomValidator验证控件的例子来说明,首先编写客户端javascript代码,如下:
然后再CustomValidator验证控件中作如下配置:
定义在上传过程中客户端跳转的提示信息
文件上传类型验证
方法一
通过设置SlickUpload控件的ValidExtensions和InvalidExtensionMessage属性,如下:
这样当用户选择了非图片文件之后将会看到下面的结果:
方法二
结合CustomValidator控件来验证,首先编写JavaScript函数:
然后在CustomValidator控件中指定用刚才编写的方法验证,如下:
<asp:CustomValidator runat="server" ClientValidationFunction="Validate_SlickUploadValidExtensions" Text="请选择图片文件 (*.png, *.gif, *.jpg)." />
说明
在本篇中讲述演示了如何将文件上传到服务器硬盘的相关配置,尽管在SlickUpload作者提供的文档中有讲述如何将文件保存到SQL Server服务器,但是这种方法非特殊场合并不推荐,使用情况较少,所以在这里并没有讲述如何配置。除此之外,本篇还讲述了如何在客户端限制上传文件的类型和文件个数。关于这篇和上篇文章的未尽之处请下载本人的示例代码,下载地址是:http://zhoufoxcn.download.csdn.net/(本人所使用的版本是VS2008SP1,如果你的VS版本低于或者高于我的VS版本的话,请按照本片和上篇对web.config做相应调整)。
本篇和上篇未尽之处请参考http://krystalware.com/Products/SlickUpload/处的说明文档,并且在那里还有Demo供下载(包括在ASP.NET MVC中的示例)。本文只是在《ASP.NET MVC2 IN ACTION》英文版时周公产生了兴趣,做了一些简单实验之后的体会和总结。
周公
2010-07-26
分享到:
相关推荐
asp.net C# 利用FTP 远程下载文件到指定盘符`
文件上传的应用,asp.net中利用Fileupload实现的文件上传
在ASP.NET中实现多文件上传
asp.net+ajax 实现的多文件上传, 支持文件单独和批量上传,单个和批量移除
【ASP.NET编程知识】asp.net利用ashx文件实现文件的上传功能.docx
asp.net操作文件的上传、读出、删除等操作!!!
基于jquery.form插件写的ASP.NET文件批量上传。
在ASP.NET中支持断点续传下载大文件,原理,代码事例,
asp.net利用ftp上传文件实现示例代码 传统的asp.net上传会经常不稳定,不是出现超时就是大小限制 代码示例会帮到你
asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件...
此段代码为asp.net利用ajax实现文件的无刷新上传,其中用到了javascript的jquery框架。
asp.net上传 可以上传无限大小的文件,同时可以选择多个,也可以设置上传大小
Asp.net同时上传多个文件Asp.net同时上传多个文件Asp.net同时上传多个文件Asp.net同时上传多个文件
基于webuploader的asp.net大文件分片上传,最大可以上传5G左右的东西
asp.net自定义固定格式多文件批量上传
Asp.net 2.0 NeatUpload上传大文件小实例
ASP.NET+VB.NET 上传文件 以一个用户注册页面为例
ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP...
自己用ASP.NET做的文件上传示例 需要用IIS作服务器来测试
asp.net+flex 批量上传文件 包含 asp.net 和 flex 的工程源代码