Posted on 2004-06-09 00:30
bestcomy 阅读(63895)
评论(246) 编辑 收藏 网摘 所属分类:
随笔AspnetUpload
专为ASP.NET程序开发人员设计,提供基于WEB的大文件上传完美解决方案。
特性简介
- 可上传任意大小文件,同时用户可上传最大文件大小可由服务器端控制。
- 可上传文件大小由组件配置文件可控制,不受到系统配置文件(machine.config)的影响。
- 完全基于.NET开发,无需任何客户端配置。
- 提供同步的上传进度条,显示实时上传进度信息。
- 不破坏页面逻辑,提供类似ASP.NET内置上传组件的使用方法。
- 不受 Server.ScriptTimeout(请求的超时设置) 影响。
- 可以对每一次请求单独控制上传文件大小。
- 不影响同一项目中的HtmlInputfile功能。
开发测试环境
- 操作系统: Windows 2000 Professional
- 开发工具: Microsoft Visual Studio.NET 2003
- WEB服务器: IIS 5.0 & .NET Framework 1.1
- 浏览器: Internet Explorer 6.0
DEMO下载
更新历史
- AspnetUpload 2.3 (2005年11月30日)
- 完全支持ASP.NET 2.0的版本(不与ASP.NET 1.0兼容)。
- Windows 2003 Server 下使用 VS.NET 2005开发.
- AspnetUpload 2.2 (2005年9月27日)
- 修正一个BUG
- 按照每个请求单独控制上传文件大小
- 对不应用本控件的页面仍然可以使用缺省的InputFile控件
- AspnetUpload 2.1.2 (2005年4月28日)
- 增加内置进度条;
- 增加10m免费版.
- AspnetUpload 2.1 正式版(2005年4月3日)
- 修正2.0发布以来在用户的实际使用中发现的bug,目前已经是一个相当稳定的版本。
- 已经支持大部分主流浏览器。
- AspnetUpload 2.0 正式版(2004年9月23日)
- 重写文件上传核心代码,提高上传速度,同时降低上传过程资源利用率
本地测试速度提高一倍以上,internet环境测试可达到专业ftp软件上传速度的2/3.
- 增加组件配置信息,文件上传大小由组件配置信息控制(位于web.config),不受到系统配置信息影响(machine.config)
注意:目前本组件不支持 ASP.NE 2.0,将在ASP.NET 2.0正式版推出后增加对其的支持。
- AspnetUpload 1.1 正式版(2004年7月29日)
- 修改中文支持的问题 (感谢 )
- 上传中途取消后可不关闭上传页面而重新加载上传页面 (感谢 和 )
- 增加对验证控件的支持
- AspnetUpload 1.0 正式版
基于测试版的改进:
- 修正了测试版中上传完成后资源未完全释放问题;
- 集成对IIS 5.O 和 IIS 6.0 统一支持,即无需针对不同的IIS服务器版本使用不同的演示程序;
- 增加自定义客户端验证功能;
- 演示程序中增加了无刷新进度条示例和自定义客户端验证功能示例。
购买
请通过以下方式支付:
沪江网店购买链接:http://www.hjbook.net/product/2771/(企业版)
作者主页
http://www.aspnetupload.net/
重要申明:本组件为共享软件,DEMO无功能限制,但是有时间限制
Feedback
VB的例子我刚才试成功了,请问 有2.2版本的吗?注册方式和C#的是一样的吧?
通过共享软件中心付款要多长时间?
这是2.2的c#demo版
http://www.aspnetupload.net/upload/AspnetUploadDemo">http://www.aspnetupload.net/upload/AspnetUploadDemo[2.2].rar
如果用vb.net,将2.1.2的Bestcomy.Web.Controls.Upload.dll替换为2.2的就可以了
看你通过什么方式付款,如果是网上银行转帐会很快
我想装个图片上传组件,这个能行吗?AspJpeg这个是做什么用的,用他可以吗?
我在使用时,一点上传按钮就执行上传了,而我做的表单检查功能也没有了,怎么解决这个办法,先检查表单的合法性,然后再上传文件好不好
QQ:121795781
我在使用中发现UploadFile.GetUploadFile("file1")总是无法得到UploadFile 对象,为什么??
请回复。。。。。
等待中。。。。。
首先确认你是按照demo中的readme.htm所述步骤使用的
一般会是一下三个方面的问题:
1.没有注册Bestcomy.Web.Controls.Upload.UploadModule 这个httpmodule
2.<input type=file>的name属性的值不是UploadFile.GetUploadFile("file1")参数值;
3.form 缺少此属性 enctype="multipart/form-data"(但是在aspnetupload 2.*版本中已经不需要手动设置此属性,可作为参考)
新下载的2。2版,用demo里的Bestcomy.Web.Controls.Upload注册后,为什么没有UploadFile.GetUploadFile(),只有Get_uploadId() ,而你的demo里却是有GetUploadFile()方法。
这里也谈到了大文件下载的解决方案
http://support.microsoft.com/default.aspx?scid=kb;en-us;821387
不过我测试我,有些问题, 问题也同样存在在
http://support.microsoft.com/default.aspx?scid=kb;en-us;812406&Product=aspnet
当我把一些杂七杂八的大文件放进一个文件价中,再用zip压缩它,例如 test.zip, 再去下载它,就会出来错误, error : Access .....\test.zip denied , 非常奇怪,当这个文件不是很大60M 以下,没有问题,但是大的时候就出错,目前还没有找到原因.有没有人遇到过这样的问题?
同志,你的帮助文档全部是英文的,怎么能看懂呀,E文差呀。如果可以用用我想购买,能回复一下我吗。ceoidc@yahoo.com.cn
想问个比较菜的问题?点击提交后,如果文件类型不对,或者文件大小超过了限制(比如10M),如何使他不弹出那个进度条页面,而弹出出错信息呢?
文件类型可以客户段脚本判断一下,
文件大小如果不使用activeX客户端无法判断,而使用ActiveX就要降低客户端安全权限
我试了,没有问题,但是如何当前登陆IE的用户在上传时候在文件夹中没有写入的权限时候,会报错(NullReferenceException),但是用catch(NullReferenceException或无权限访问异常)都无法捕获到,获取友好的错误提示,还是ASP.NET系统提供的错误异常,,请问如何解决
@caojian
应该是可以捕获到的,直接捕获Exception看看,但是我还是建议不要靠异常 来判断是否有写入权限
再怎么写,还是把web.config中 maxRequestLength设为较大值
朋友们,其实在web.config中加入下列代码就OK啦!
<httpRuntime maxRequestLength="409600"
useFullyQualifiedRedirectUrl="true"
executionTimeout="6000"
minFreeThreads="8"
minLocalRequestFreeThreads="4"
appRequestQueueLimit="100"
enableVersionHeader="true"
/>
现在你可以上传400M都没问题.
@zhufan
我相信很多人都知道你所说的这个解决办法,我在自己的项目中也不是没尝试,但最终发现这个方法在实际中根本解决不了问题,超时及白页的错误频繁发生。
为什么我上传完文件就会出:
对路径“C:\Inetpub\wwwroot\\AspnetUploadDemo\Upload\0d12303f-96a5-46c1-a92e-a4c215fdf641.exe”的访问被拒绝。
如果我想控制上传文件的格式以及文件大小 该怎么办??
谢谢
我的服务器有两块网卡,如果只购买服务器与硬件有关的就只能要一个MAC地址,我想注册,怎么办???,急急急,我急着购买
我的服务器有两块网卡,如果只购买服务器与硬件有关的就只能要一个MAC地址,我想注册,怎么办???,急急急,我急着购买
我想购买一套AspnetUpload在开发中使用
不知是购买AspnetUpload企业版 还是AspnetUpload服务器版?
为什么我上传完文件就会出:
对路径“C:\Inetpub\wwwroot\\AspnetUploadDemo\Upload\0d12303f-96a5-46c1-a92e-a4c215fdf641.exe”的访问被拒绝。
拒绝访问是因为权限不够
我的Everyone用户已有 读取及运行、列出文件夹目录、读取、写入权限了。还要设置何种权限?????
@ qq127hb
如果你只是在一台固定的服务器上用到本组件,购买服务器版即可;
如果你的项目可能部署到多个服务器上则建议购买企业版;
如果现在只是用在一台固定的服务器上,考虑到会在其他项目中也使用本组件或者服务器可能迁移也建议购买企业版。
你列出的错误是否是运行从网站下载的demo版时出现的错误?
to BestComy
我运行的的从网站下载的demo版的AspnetUpload
你应该是在.net framework 1.1下运行的吧?
不行就改C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG、maichine.config的processModel配置节的userName="SYSTEM"
先这样改看行不行
to BestComy
我现在是用Visual Studio .net 2003开发,.net framework 1.1下。
不知道我应购买那个版本的AspnetUpload??
购买AspnetUpload后在AspnetUpload出新版本后是否可以免费升级??
如果我购买的是企业版, 我是否能无限制地随我们的程序分发????
@qq127hb
.net 1.1 购买 2.2即可,升级到支持.net 2.0版本需要支付升级费用
企业版可以无限制随你的程序分发
to BestComy
我已下订单 明天去汇款
还是通过银行汇比较安全 虽然传统 但是安全 -0-
你是通过共享软件注册中心购买吧?他们提供的信息是应该是正确的,如果你觉得不放心可以通过电话与他们的客服联系。
to BestComy
为何我用模态窗体来上传文件,aspnetupload就失效呢??
请速回!
就是我上传文件的窗口是模态窗体
例子上面是这样的
<li><a href="CustomerDefined.aspx">Multiple upload with fields - custom iframe progress bar</a></li>
然后我改为
<li><a href="#" onclick="window.showModalDialog('CustomerDefined.aspx');">Multiple upload with fields - custom iframe progress bar</a></li>
这样;弹出模太窗体后;我上传文件, 然后发现进度条没反映,文件上传也没反映了。
其他地方的代码均未改动。
版主现在在吗?? 能否qq上一叙?
我的:231582042
我购买了AspnetUpload 2.1 release ,现在想用AspnetUpload 2.3 release的for asp.net2.0, 但是就是找不到在什么地方下载试用,购买也没有,到哪里去找阿!
我的QQ:
292324157, MSN: mflsoft@hotmail.com
邮箱:mflsoft2008@126.com
請問使用信用卡購買是不是只能買2.3版的呢?
我想要購買2.2版的
AspnetUpload™ 2.3 is available for purchase now, this version is designed only for AspnetUpload 2.0 RTM, and no trial version is available for download.
這段意思是說,2.3版的要付費。2.0版的不是試用版,也就是免費
是這樣嗎??
如果用免費版的,會不會用到一半跳出需要註冊的訊息呢?
目前只有2.2有免费版,免费版有文件大小限制,超过限制会显示注册信息.
2.3没有免费版
进度条可以不放在中央,在进度条页面中的客户端document.body.onload事件中使用window.moveTo(0,0);
免费序列号怎么给呢。给我一个吧。
mail: lymappy@163.com
历经千心万苦,我也做了一个,取名AspNetUpLoad.WestSoft.FileUp正在使用中,当然是在您前辈的指引下,我想说的是你是否还坚持和LION一起拒绝开源,如果是这样的话,我也加入一个。
老板还在吗?请教个问题:我的页面是纯HTML的,后台用ASPX,这个控件好用吗?如果我把它加到页面上,后台接收文件输入的函数需要做什么修改?
老大求一个序列号 luminfen@163.com
2.3版本的和2.1的序列号是通用的吗?
我现在用2.3版本有个很奇怪的BUG
局域网上传,进度很快就到99%了,但是到99%以后要等两分钟才到100%
只要文件稍微大一点就出现这种情况,几十K的文件没有这种问题
弄了半天还是不明白
public void RegisterProgressBar(
string ProgressBarUrl,
Button ButtonToUpload,
string validateFunction
);
这个重载的函数的参数怎么写?js验证函数应该写在哪?
能给个小demo么
谢了
还有,购买那个页面乱码,还提示证书过期,怎么回事啊?
http://www.aspnetupload.net/Lisence/Register.aspx
@白菜[匿名]
2.3版本的和2.1的序列号是通用的
你说的问题可能是你使用VS.NET自带的IIS出现的问题,换成Windows的IIS就不会有问题了
@ARC
validateFunction 是客户端javascript函数,可以做一些你自己的验证,必须返回布尔值
你访问的购买的页面我已经放弃使用,请点击本贴主题购买部分的链接进行购买。
你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子
你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子你是骗子
国内的程序员为啥做出点东西就想着卖钱呢?一个小小的组件就想卖,你的这个组件能和Spring,Delphi,Java等等这些相比吗?另外你是在公司上班时做出的,应该归公司所有,不知道你公司知道你搞这个该作何感想
help:
我们在使用中发现一个问题:先上传了一个300M的文件,正常;再上传一个300M的文件时(进度条约99%),页面就异常了:
超过了最大请求长度。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.HttpException: 超过了最大请求长度。
经多次试验,连续两次传较大文件都会出现此问题,请各位高手指点一下,多谢!
有谁知道AspnetUpload 2.3 release在asp.net2.0 上好用吗?请告诉我一声,多谢了!
我自己需要建一个网站,需要文件上传功能,但是我的服务器是通过网站租的,请问我需要哪种版本,该怎么办!急!
免费的序列号还有么?
13month@163.com
It would be appreciated if I can recieve a free sn from you.
zeng.stephen@gmail.com
很同意楼上一位说的,难怪国内软件没啥发展,开源的东西太少了,都怪中国人经商头脑灵活。唉,还是自己写
最新研发本地同时选择无限制文件上传服务器.
支持除iso以外的文件格式.
客户端仅需安装一个actiex控件
采用10级并发操作.
同时还提供百度搜索系统的后台程序,欢迎联系.
欢迎339380882@qq.com,
完全免费.
哈哈,能否也给我一个?
wldlzt@163.com
请问:我要求上传到服务器上的文件保存路径是动态的,那AspnetUpload 2.3 release支持吗?谢谢!
现在这个世界真现实...什么都要钱(PS:不是针对LZ)
AspnetUpload 2.3 release真的有免费放送吗?我想要
Email:amwsov534@163.com
现在自已写个小程序,文件管理,有时候上传的文件比较大,正需要中。。
我这里有一个用delphi写的ASP组件,我测试过上传大文件没有问题的,不过现在没有进度条,如果有朋友有兴趣的话,我们一起交流一下,可以一起改进这个组件。给我发邮件。
MSN:luozhaoliang@hotmail.com
再告诉大家一个简单的上传工具:Kudaa
Kudaa大文件传输工具,可以进行离线大文件传输,是当今市场上进行大文件传送最快的软件。大家可以到Kudaa网站 www.kudaa.net.cn下载Kudaa进行快速互联网传输。该软件使用简单,传输效率高,已成为互联网大文件传输的标准选择。
哦,看错了,是199楼的。kudaa传输大文件真的很方便,又快!
不知道为啥,ASP.NET的开源控件咋就这么少呢,以前用JAVA时上传控件一搜就一堆还都是开源的。
免费的序列号大小限制多少?
demo里面的显示使用时间多长?
@4485
限制10m以下,demo里3小时application time之后失效
2.3版本的和2.2的序列号是通用的吗?
好想有点问题
2.2升级到2.3费用是多少? 如何升级?
我以前购买的是2.2的序列号。
购买凭证是指发票?
原来我购买时没有要发票。
我现在能提供原来购买的序列号。
@qq127hb
可以,一样的,请通过邮件与我联系
有个奇怪的问题:
但文件上传进度达到99%的时候,还需几十秒的时间才能上传完毕,不管是几百m的大文件还是几十k的小文件都是这样.是什么原因呢?
@qq127hb
是因为文件先传到临时文件夹,然后saveas到你指定的目录,而此过程没有在进度信息中体现,因此会感觉有延迟。
文件从临时文件夹到指定文件夹这个过程如何在进度条信息也显示在总的进度信息里面?
@qq127hb
目前没有把这一过程设计到进度信息中。
这样做的是对何时结束的处理的取舍问题,如果保存的过程也加入进度信息会增加其生命周期,这样如果用户并未保存文件则进度信息无法结束,进度就会hang住。
当然,你要把这一过程也在进度条中显示也是可以实现的,那就是自定义进度条,当上传完成后,你将自定义的文件保存过程信息显示到进度条。
“/AspnetUploadDemo”应用程序中的服务器错误。
--------------------------------------------------------------------------------
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[NullReferenceException: 未将对象引用设置到对象的实例。]
Bestcomy.Web.Controls.Upload.UploadModule.62aadb2cfa53b890() +80
Bestcomy.Web.Controls.Upload.UploadModule..ctor() +447
[TargetInvocationException: 调用的目标发生了异常。]
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +82
System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +230
System.Activator.CreateInstance(Type type, Boolean nonPublic) +67
System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +1051
System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +111
System.Web.Configuration.Common.ModulesEntry.Create() +39
System.Web.Configuration.HttpModulesSection.CreateModules() +164
System.Web.HttpApplication.InitModules() +28
System.Web.HttpApplication.InitInternal(HttpContext context, HttpApplicationState state, MethodInfo[] handlers) +729
System.Web.HttpApplicationFactory.GetNormalApplicationInstance(HttpContext context) +298
System.Web.HttpApplicationFactory.GetApplicationInstance(HttpContext context) +107
System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +289
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.3031; ASP.NET 版本:2.0.50727.3031
namespace AspnetUploadDemo
{
/// <summary>
/// Singleupload
/// </summary>
public partial class Singleupload : System.Web.UI.Page
{
protected void Page_Load(object sender, System.EventArgs e)
{
AspnetUpload upldr = new AspnetUpload();
string fpath = Path.Combine(Server.MapPath("."),"Upload");
if(!Directory.Exists(fpath))
Directory.CreateDirectory(fpath);
upldr.set_UploadFolder(fpath);
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
}
#endregion
protected void btn_upload_Click(object sender, System.EventArgs e)
{
AspnetUpload upldr = new AspnetUpload();
UploadFile file = upldr.GetUploadFile("file1");
if(file != null)
{
string fpath = Path.Combine(Server.MapPath("."),"Upload");
fpath = Path.Combine(fpath,Path.GetFileName(file.get_FileName()));
file.SaveAs(fpath);
StringBuilder sb = new StringBuilder();
sb.Append("<div class=\"entry\">");
sb.Append("<h2>File uploaded</h2>");
sb.Append("<strong>File Uploaded:</strong> ");
string url = QueryFilename.EncryptFilename(Path.GetFileName(file.get_FileName()));
sb.Append("<a href=\"download.aspx?filename="+url+"\" target=\"_blank\">"+Path.GetFileName(file.get_FileName())+"</a> ["+file.get_ContentLength().ToString("###,###")+" Bytes]"+"<br>");
sb.Append("<strong>Dscription:</strong> "+box_descript.Text+"<br><br>");
sb.Append("</div>");
txt.Text = sb.ToString();
}
}
}
}
为什么aspnetupload控件在page_load下定义为局部变量
@yandong
这是为了定义一些配置信息,为创建进度信息作准备。