ASP.net下大文件上传的解决方案及WebbUpload组件源码 (转自Wu.Country@侠缘 )

WebbUpload上传组件

特性简介
可上传上小于1G的文件,可以配置Web.config文件来设定上传文件的大小。
完全基于.NET开发,无需任何客户端配置。
提供同步的上传进度条,显示实时上传进度信息。
不破坏页面逻辑,提供类似ASP.NET内置上传组件的使用方法。
不受 Server.ScriptTimeout(请求的超时设置) 影响,可配置服务器处理时间。


开发测试环境
操作系统:Windows XP Professional(en)
开发工具:Microsoft Visual Studio.NET 2003
WEB服务器:IIS 5.0 & .NET Framework 1.1
浏览器:Internet Explorer 6.0/

2005-12-28更新说明:
1、修改了多文件上传时文件列表项为空时的错误。
2、更新了进度条的文件名显示方法,只保留文件名,删除了路径。
下载 https://files.cnblogs.com/WuCountry/WebbUploadSample.rar


关于WebbUpload上传组件的开发请查看相关链接:http://computer.mblogger.cn/wucountry/posts/48947.aspx 


2006-01-25 第二次更新:




下载:https://files.cnblogs.com/WuCountry/WebbUploadSample.zip

说明:
1、修改了一下上传进度条。
2、添加了几个属性,并修改了一个类名,原来的WebbUploadHandler改为WebbUploadStatusHandler。
3、可以不破坏HttpinpuFile上传,只用在调用时调用方法:EnableWebbUpload(false);就可以使用原来的上传方法。默认是使用WebbUpload.
4、本次下载文件里有演示的完整源代码。

相信本次修改会会使该组件越来越稳定,而且在我的实际项目里一直在使用。


2006-02-17
公开全部源代码。

昨天同事给了我一个工具,可以把DLL文件逆向为工程项目。所以这个上传组件也就没有必须在保护源代码了。
本来考虑到ASPNetUpload的商业行为,还准备暂时不公开这个组件的源代码,但这已经没有意义了。
Webb.WAVE.Controls.WebbUpload控件全部源代码:
https://files.cnblogs.com/WuCountry/WebbUpload.zip
结合上面的演示实例,应该是一个很好的学习项目。

posted on 2005-12-28 16:40 Wu.Country@侠缘 阅读(4003) 评论(125)  编辑 收藏 引用 收藏至365Key 所属分类: 02.ASP.net(C#)03.DotNet

评论

# re: 第一次更新WebbUpload 2006-01-18 17:20 Wu.Country@侠缘

看到了一些朋友们讨论的问题:
http://computer.mblogger.cn/wucountry/posts/48947.aspx

解答如下:
1、从技术上讲,当使用了Webbupload组件后,原来的上传方式(用HttpPostedFile)是不能用了的。原因有点复杂,对于理解其工作方式的人就会明白。这里说明一下:AspnetUpload和SunriseUpload.0.9.1及Lion.Web.UpLoadModule v1.0 都是一样的,因为这些从技术上讲是同出一则,无非是看谁的脚本写的好,谁的算法好,使得执行效率高一些。
2。m_file.FileName为空?上传文件类有两个名字,一个是客户端的文件名,另一个是上传到服务器后的GUID文件名,仔细检查一下。我也再检查一下。
3.关于源代码问题,暂时可能还不能公开,因为上面的AspnetUpload是一个商业组件,而且我的组件开发也是基于它的一些思想,因此暂不公开。但我还是说明一下,在我的博客上有SunriseUpload.0.9.1源代码的下载,这是国外的一个开源,与其它几个组件及相似,只是效率低一些,修改一下也可以的。如果做为学习,这是不错的。  回复   

# re: 第一次更新WebbUpload 2006-01-27 15:19 zhangty

你的大文件上传很好用,但是我原来的一些文件上传程试都不能用了,包括Lion.Web.WebHtmlEditor也无法上传附件啦。这个问题能解决吗?  回复   

# re: 第一次更新WebbUpload 2006-02-16 10:32 ozn

你们所有的解决方案都基于这篇文章
http://blog.aspcool.com/rogerwang/archive/2005/10/18/1841.html#3115
参考这个,大家都可以写自己的上传组建  回复   

# re: 第一次更新WebbUpload 2006-02-16 14:58 Wu.Country@侠缘

呵呵,是呀,这个说是我说的:SunriseUpload
但它的上传效率太低了。只能说工作原理参考它了,还是得自己写算法,否则本机测试不到1MB/S
而ASPnetUpload可以过4MB/S,我的可以达到3.5MB/s,都是在我的电脑上做的测试。
  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-17 11:38 泥娃

呵真是巧,一分钟前没有源码的,一不小心把刷源码出来了.  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-17 11:41 泥娃

真是感谢 Wu.Country@侠缘   回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-17 16:16 mpokky

侠缘大哥有使用手册吗  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-17 16:53 Wu.Country@侠缘

演示文档里有一个小的说明文件。
毕竟不是商业版,没有使用手册。我也没时间写,报谦了。
AspNetUpload的帮助说明很清楚,可以参考一下,毕竟工作模式是一样的。
我看了一下,70%的函数及使用是相同的。呵呵,应该有点帮助。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-20 09:22 暴风雪

我有个关于代码的问题,

就是在处理Http请求的时候 根据ContentLength建立了一个byte的数组。
那么是不是说上传多大的文件都会在内存里占用相应的大小的文件呢?
如果很多人同时上传 服务器还不得崩了?

这块一直没想太明白,请帮忙指点下。
谢谢  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-20 11:26 william_luck

我在运行您的组件时出现以下错误,不知道是什么原因?
Server Error in '/testupload/WebbUploadSample' Application.
--------------------------------------------------------------------------------

Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: The located assembly's manifest definition with name 'Microsoft.Web.UI.WebControls' does not match the assembly reference.

Source Error:


Line 1: <%@ Control Language="c#" AutoEventWireup="false" Codebehind="Inc_Botton.ascx.cs" Inherits="Webb.WAVE.inc_botton" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
Line 2: <%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
Line 3: <script language=javascript>
Line 4: function WavePageChangeTitle(){


Source File: E:\testupload\WebbUploadSample\Inc_Botton.ascx Line: 2

Assembly Load Trace: The following information can be helpful to determine why the assembly 'Microsoft.Web.UI.WebControls' could not be loaded.


=== Pre-bind state information ===
LOG: DisplayName = Microsoft.Web.UI.WebControls, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35
(Fully-specified)
LOG: Appbase = file:///E:/testupload/WebbUploadSample
LOG: Initial PrivatePath = bin
Calling assembly : (Unknown).
===

LOG: Publisher policy file is not found.
LOG: No redirect found in host configuration file (D:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet.config).
LOG: Using machine configuration file from D:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\config\machine.config.
LOG: Post-policy reference: Microsoft.Web.UI.WebControls, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: Attempting download of new URL file:///D:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/testupload_webbuploadsample/ba2d274f/c422d832/Microsoft.Web.UI.WebControls.DLL.
LOG: Attempting download of new URL file:///D:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/testupload_webbuploadsample/ba2d274f/c422d832/Microsoft.Web.UI.WebControls/Microsoft.Web.UI.WebControls.DLL.
LOG: Attempting download of new URL file:///E:/testupload/WebbUploadSample/bin/Microsoft.Web.UI.WebControls.DLL.
WRN: Comparing the assembly name resulted in the mismatch: PUBLIC KEY TOKEN




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:1.1.4322.573; ASP.NET Version:1.1.4322.573   回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-20 14:30 Wu.Country@侠缘

To:暴风雪
要充分相信我们的服务器。
呵呵,我的组件没有经过压力测试,所以我不好回答你的问题。可能ASPNetUpload的组件经过压力测试。然而其工作原理是一样的,如果服务器的内存够大,应该还是可以的。在我的512MB的机器上测试时都很正常,而且内存占用在1个人上传的时候可能会达到100MB。但我没好办法了,速度与内存消耗总得有一个。
To:william_luck
删除这个JavaScript函数,这是我的其它项目里的内容。
自己可以删除与WebbUpload无关的任何内容。这里面可以是两个项目。
  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-20 15:26 william_luck

在下实在是不好意思,因为我是初学者,不太明白应该在哪个地方删除那个JavaScript函数,请您一定给我解答一下,非常感谢!
  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-20 15:49 william_luck

我在网上找了很多关于安装Microsoft.Web.UI.WebControls的文章,也都按照步骤照做,但运行您的组件还是报错,我觉得还是那个treeview控件没有注册成功!另外我发现你发布的程序bin目录下没有Microsoft.Web.UI.WebControls.dll这个文件.
哎!郁闷了一天了!
如果您有时间的话,能不能上传一个不包含这个函数的上传组件!

非常感谢您能够免费把这个程序和大家共享!希望您以后多加指教!  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-20 16:22 Wu.Country@侠缘

一个最简单的方法就是先备份你下载的源文件。

再用新的文件做为测试项目文件,一点一点的注释或者删除你不明白的内容。
直到可以运行,直到你全部看明白,或者只到只剩一行语句。。。。

然后对比两个项目,向删除过内容的那个项目中一行一行的添加新内容,直到和原来的完全一样。。。。
这是我学习的一个方法,希望对楼上的有用。。。。

关于Microsoft.Web.UI.WebControls,原来的是私有程序集,后来安装成为公有程序集,所以你所参考的可能有问题,你从MS的网站上下载最新的安装包后,直接安装就行了,本地的BIN目录里不再须要这样文件了。但地项目发布时,考虑到版本原因,还是将这个文件COPY过去。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-21 13:29 mpokky

侠缘大哥,我编译后出现这样的报错是怎么回事啊,warning CS1607: Assembly generation -- Referenced assembly 'Webb.WAVE.Controls.Upload' is a localized satellite assembly
另外,大哥有e-mail或qq吗  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-21 14:13 Wu.Country@侠缘

对于文件里的一些错误,我真的表示很报谦。因为这是从我的实际项目里提取出来的,所以里面多多少少有一些我没能移出的内容,可能会在编译及运行中产生一些错误。
但这并不影响组件的使用,因为组件完全是一个独立的内容,可以重新建立一个新的Web项目来测试这个组件。。。。。。。。

TO:mpokky:你的问题前面已经有人问过了,你删除这些多余的引用就行了。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-21 15:49 william_luck

多谢Wu.Country@侠缘 的指点,我删除那些无用的按钮函数后终于实现了大文件上传的功能,确实不错!
但我也有一些问题:(1)如何改变上传文件存放的路径(我在singleupfile.aspx.cs中找到一些关于上传文件的代码,但改过之后没有任何反映!例如:我将下面这条提示语句this.Label1.Text= "Uploaded file:<br/>";改成
this.Label1.Text= "上传文件名:<br/>";但运行后没有任何变化!在下没学过c#,.net,麻烦您解释一下我这个低级的问题)
(2)如何将上传进度条的提示改成中文提示
由于在下初学asp.net,请教楼主网上有什么比较好的学习网站或书籍?
麻烦您了!  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-22 08:56 Wu.Country@侠缘

Webb.WAVE.Controls.WebbUpload里有一个资源文件(唯一的),这是一个基于HTML的文本文件,修改里面的英文,可以得到想要的进度条。

Lable1的显示文字是动态修改的,静态的只是为了在设计时看见它。你可以学习一下ASP.net的基础知识。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-22 17:45 mpokky

WebbUpload wu = new WebbUpload();
UploadFile uf = wu.GetUploadFile("f");

我得到的uploadfile对象是空的,怎么回事啊,我 的e-mail是mpokky@citiz.net  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-23 09:26 Wu.Country@侠缘

你再仔细检查一下。你的Form要能上传文件才行,也就是要添加:
enctype="multipart/form-data"
或者还可能有其它的错误,你参考一下例子。
  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-23 18:11 mpokky

现在是UploadFile uf = wu.GetUploadFile("f");
getuploadfile方法返回的是null值,
form的那句话我也写了
代码如下:
WebbUpload wu = new WebbUpload();
UploadFile uf = wu.GetUploadFile("file1");
if(uf!=null)
{

string filename = uf.ClientFullPathName;
filename = Path.GetFileName(filename);

string filepath = fyear+fmonth+fday+fh+fm+fs+filename;
string savepath = Server.MapPath(Request.ApplicationPath)+"\\"+ConfigurationSettings.AppSettings["uppath"];

savepath = savepath+"\\"+filepath;
uf.SaveAs(savepath);
}  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-02-24 08:30 Wu.Country@侠缘

你参考例子看看吧。这里的代码没看出有什么问题。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-03 11:48 denny li

大侠,

谢谢你的帮忙,我现在使用你的代码在windows 2003 server and vs2003下面使用已经没有问题了。

但是我们新系统的环境是windows 2003 and vs2005,我把你所有的东西都搬到vs2005下面,system.web使用framework1.1的。

编译没有问题,运行的时候出问题。



请问如何才能把你的代码移到2005下,让他能正常运行?

希望你得到你的回复

denny.li@fusion-system.com

谢谢

  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-03 16:29 Wu.Country@侠缘

目前我没有环境在2005下及asp.net2.0下测试。
有机会我一定修改这个组件。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-08 11:05 denny li

你好,谢谢你的帮助
现在上传组件可以在我们2005的项目中使用了
想问一下当我上传完以后,我重新刷新页面为何文件会重新上传一次呢?(我到对应目录下删除上传的文件,刷新后文件又上传了)
如何解决这个问题呢?

(同样的问题也在你的sample中存在)

希望能得到你的回复

谢谢

Denny Li
  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-08 11:11 Wu.Country@侠缘

这个问题很简单,你自己在PageOnLoad或者提交事件上添加一些自己的逻辑就行了。
或者你上传后,做一些跳转,资源清理等工作就不会有这样的问题了。 这与组件没有关系。
感谢你对组件的支持,并使用在2005中。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-08 13:44 笨笨小新

您好!
用了您的Sample,在VS2005上面跑了一下,可以上传,也出现了ProgressBar,可是上传完了后,却出现了不能找到页面的错误,难道根VS2005有关?  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-08 14:33 笨笨小新

另外不好意思还有一个问题。
就是如果上传文件的大小超过了web.config里面的max值,会不会出现找不到叶面的错误?

谢谢。
主要是上面催得紧,只好先来问问。
现在也同时开始认真读代码。赫赫  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-08 14:57 Wu.Country@侠缘

会!我试过。你也可以试一下。但我的组件没有在2005里试过,你自己试试吧。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-08 17:14 笨笨小新

看了一眼source,发现这么一句。
long m_requestTotalSize = Convert.ToInt64(m_workRequest.GetKnownRequestHeader(11));

这句话大致取到了上传文件的长度,(好像不是绝对一致的长度,因为它原理上是Header的长度,天知道Http协议往里面夹了什么东西。)

这个长度好像也是在文件还没有上传的时候就能知道。

因此紧跟着下面有这么两句
long m_MaxSize = this.GetUpLoadFileLength();
if(m_requestTotalSize>m_MaxSize)
{
return;
}
其中m_MaxSize 就是web.config里面定义的最大长度,
因此,我就可以在return前面写上一些代码,达到如果超出这个预先定义的最大长度,就返回出错画面什么的。

我可以这么理解吧?

不过讨厌的是这是void函数,没法用返回值体现结果。。。。

  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-08 17:17 笨笨小新

补充:
我现在就是想上传文件长度万一超过web.config里面定义的最大值,
最好也不要直接蹦出来找不到服务器画面,
而是返回一个比较平易近人的出错画面。

赫赫,请继续指教!  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-08 17:35 笨笨小新

刚才发现在我的web目录下面
(还没找到程序里面在那儿设置的上传子目录,姑且认为web子目录就是上传子目录或者临时子目录)
有这种文件
e0bc0bc9-5c13-489a-8946-0338f10dc22a.rar
而且有900多兆。我原始的上传文件是rar文件,可是只有6兆多。

我是调试到某句,几分钟什么也没干,画面就自动跳到找不到服务器出错叶面。
反复了几次后突然系统告诉我硬盘空间不足,一查,查出了这个文件来。赫赫

Wu.Country@侠缘 不知道碰到过这种情况没有?  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-08 17:47 笨笨小新

对了,在我本地的机器上传送速度也就是50KB/s,这个速度正常吗?。。。。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-08 17:59 路过

那要看你的机器怎样了。。。。。
我的:P42.8
512MB内存,本机测试3.8MB/S为最大速度。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-08 19:18 笨笨小新

@路过

我的是ThinkPad T41,PM1.7,1G内存,按理说不该这么差呀。

不过我用的是VS2005,总觉得可能哪儿没设置好?  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-09 09:22 空中飞人

你好.用你那个源代码下载的地址下载到的文件是一个件以文件?需要用什么打开?  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-09 09:45 Wu.Country@侠缘

@笨笨小新
别人只是路过,不可能再回答你的问题了。。呵呵。。。。(开个玩笑)
看来是你的代码不够精练了,或者配置有些问题。
理论上对比来看,你的真的不应该这慢。。。。。。。。
@空中飞人
打不开?!!!还是怪事!!??你自己再仔细检查一下好吗?  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-09 09:48 Wu.Country@侠缘

@笨笨小新
关于前面的几个问题。
在测试的时候,我也遇到过这样的问题。
这主要是出现一些IO错误,或者异常中断的时候,没有清理资源而形成的。一般生成的这样的文件不会大于单个上传的文件。
如果你没有上传900MB的文件,而出现了这个文件,则说明你的程序有问题,可能在什么地方出现了死循环。。仔细检查一下。。。。。。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-09 09:51 Wu.Country@侠缘

最后申明一下,如果准备自己修改及编写源代码的时候,请做好心理准备,你可能要在上百MB的数据里找几个关健的字节。。。。。。。。
这样的调试要小心,学好调试技术及培养好的心理素质很重要。祝你好运。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-09 14:24 笨笨小新

TO 大侠
我确实只用得你的Sample,也出现这样的问题呀。只不过是用在VS2005上而已。

另外,经常会出现这种情况,就是在Module里面

byte[] m_preloadedEntityBody = m_workRequest.GetPreloadedEntityBody();

m_preloadedEntityBody 永远取不到东西,太奇怪了。。。。
偶尔能取到两回,可是已经搞不清楚怎么取到的了。。。。

另外,[你可能要在上百MB的数据里找几个关健的字节。。。。。。。。]这句话是啥意思?会有啥情况?我是菜鸟,不要吓唬我呀。。。。。
  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-09 17:00 笨笨小新

另外,我能否在WebbUpload_BeginRequest里面,
判断到如果上传文件size大于web.config里面的设置值的话,直接返回自己写的出错页面,这种要求能否实现呢?
我原来在Global.asax里面的Application_BeginRequest里面写Response.Redirect,可是好像不起作用??  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-15 11:37 hutgu

这个是怎么回事?我下载晚了之后,直接用vs.net打开的。

Visual Studio .NET无法创建或打开应用程序。问题很可能是因为本地Web服务器上没有安装所需要的组建。

  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-15 17:32 Wu.Country@侠缘

MS的webCOntrols组件,我应该删除它的!
下个星期我重新整理一下这个组件再发给大家吧!尽量做好一些!
也不枉大家这样对我的支持。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-25 11:01 andyban

我是一个菜鸟,运行您的第二次更新程序出现如下错误:
找不到文件或程序集名称“Microsoft.Web.UI.WebControls”,或找不到它的一个依赖项。
我去哪里下载这个组件,给个地址好吗?

  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-27 08:54 Wu.Country@侠缘

到MS的网站去下载,应该可以很很快的搜索到这个组件。
或者删除这个组件的引用。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-27 11:30 Houp

侠缘 老师能否给出一个vb.net调用上传组件的示例?自已做了一个,可总是有问题。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-27 17:12 Houp

在局域网内测试了一下,上传速度为1.5-1.9M之间。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-30 10:49 浪漫

如果我想修改:Webb.WAVE.Controls.WebbUpload自动生成的javascript代码,如何做?是否可以提供Webb.WAVE.Controls.WebbUpload的源代理?  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-03-30 11:38 Wu.Country@侠缘

该源代码早就公开了,在博客页面上的最后下载地址上。你自己下载吧。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-01 22:30 我123

web.config里面的编码改成GB2312的时候上传中文文件名称就成乱码了,我的工程里只能使用这种编码,怎么办  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-03 15:11 cjh

哈哈。俺也用过逆项工程的工具,不错的
有GUI不过只能一个一个的看每个类,但是用命令行一下把全部类都搞定,哈哈。
不过我没机会反编译搂主的东东啦。
楼主的东西和SunriseUpload一样呀  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-03 15:34 Wu.Country@侠缘

@我123
我没遇到过这样的问题!为什么不就用utf-8呢?
@cjh
我的这样组件借鉴了SunriseUpload的一些脚本。核心技术都是参考的这篇文章:
http://blog.aspcool.com/rogerwang/archive/2005/10/18/1841.html#3115
虽然从技术上讲,大家都可以写上传组件,但对于不同的算法,上传的效率还是不一样的。。。。。。
关于这几个组件中的相互关系我已经说的很清楚了,就不再多说了。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-04 09:39 TW

5b1a0775-7dc3-4546-9659-1cae53127d5c.jpg
上傳的檔名要如何讓它變成中文呢?  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-04 09:52 TW

@TW
原來是:
m_filePath = Path.Combine(m_path,Path.GetFileName(m_file.ClientFullPathName));
  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-05 10:50 泉水

在EnableWebbUpload(false)的情况下,用以下方法m_input为null,无法上传保存。
HtmlInputFile m_input = this.FindControl("m_file") as HtmlInputFile;


改为以下方法就可以了:
foreach (Control c in Form1.Controls)
{
Response.Write(c.ToString() + "-" + c.ClientID.ToString() + "<br>");
if (c.ClientID == "fdsa")
{
HtmlInputFile m_input = (HtmlInputFile)c;
if (m_input != null)
{
m_input.PostedFile.SaveAs(Path.Combine(MapPath("."), Path.GetFileName(m_input.PostedFile.FileName)));
}
return;
}
}
Form1为表单名,fdsa为HtmlInputFile的ID,并设为服务器端控件runat=server,否则会找不到。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-05 15:28 Wu.Country@侠缘

@泉水
谢谢你提供的内容。。。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-05 19:53 我123

怎样才能在上传的时候可以随意拖动信息框?现在的是传大文件时间长了那个框会挡视线,要是能随意拖动,刷新后不回到屏幕中间就好了  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-05 23:59 TW

@我123
嗯,我也想知道,是否可以改變出現的位置,例如放在(0,0)的坐標
  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-06 08:43 Wu.Country@侠缘

那就不用模式对话框!修改一下组件的源代码应该可以,我最近没时间做这些。。。。
自己的项目要发布了,要修改的内容太多了。。。。。。。郁闷中...

  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-06 16:48 TW

@Wu.Country@侠缘
請問是在下面的代碼修改的嗎?

public void RegisterProgressBar(Button uploadButton, bool causesValidation)
{
if (causesValidation)
{
uploadButton.CausesValidation = false;
uploadButton.Attributes["onclick"] = "if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate();if(!Page_BlockSubmit){openProgress();}";
}
else
{
uploadButton.Attributes["onclick"] = "openProgress();";
}
UploadStatus uploadStatus = new UploadStatus();
uploadStatus.Status = UploadStatus.UploadState.Uploading;
this.m_GUID = uploadStatus.UploadGUID;
HttpContext.Current.Application[("Upload_Status_"+this.m_GUID)] = uploadStatus;
string progressUrl = "progress.ashx?UploadGUID=" + this.m_GUID;
this.m_script = this.m_script.Replace("${url}$", progressUrl);
Page page = ((Page) WebbHelper.GetContext().Handler);
page.RegisterHiddenField("Webb_Upload_GUID", this.m_GUID);
page.RegisterStartupScript("ProgressScript", this.m_script);
page.Application.Add(("Webb_Upload_GUID"), this.m_GUID);
}  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-06 21:57 TW

@TW
不好意思,找到位置了,如下:
window.showModelessDialog(url, window, 'status:no;help:no;resizable:no;scroll:no;dialogTop:0px;dialogleft:0px;dialogWidth:398px;dialogHeight:200px');
  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-07 10:00 泉水

普通的上传可以用以下方法
System.Drawing.Image imgPhoto = System.Drawing.Image.FromStream(Request.Files[0].InputStream)

而用了大侠的组件后,无法取得Stream属性,希望UploadFile能加上一个FileStream 属性,我自己试自添加,但不成功,希望大侠能加上,辛苦了:D。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-07 16:20 我123

发现一特大问题!!!在2003的机器上上传中文文件时,进度框里显示不出中文文件名来,那块为空!英文名字就能显示出来  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-08 11:14 javac

请问为什么要先上传到临时目录在移动,AspnetUpload就没有这个过程?  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-10 09:21 Wu.Country@侠缘

必须的!
因为用户可能取消上传!
虽然程序可以自动删除取消上传的文件,但不能保证所有的异常都会使程序删除没有上传完的文件!
而在临时目录,IIS会在一定的时候自动清理这个目录,所以一但我们的删除失败也不会有太大的问题。
ASPNetUpload也有临时文件!而且它不删除临时文件,是让IIS自动删除的!(好像是,我记的不清楚了。你们可以试一下,就是上传一半后关闭IE,或者就直接关机[当然,我不得不承认这是个馊主意],看一下用户的临时目录里的文件就知道了,当然是IIS账号在Windows下的账号。)  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-10 14:30 Open

把这个组件加到系统中,速度至少减慢一半,不知是何原因。诸位有没有同样的问题?  回复   

# 已经解决了共用WebbUpload组件与HttpInputFile 上传共存的问题 2006-04-12 16:55 泉水

因为我在项目里使用了大侠的组件后,所有的ASPX页面都是WebbUpload组件来上传,而其实只有一两个页面需要使用到组件,所以,没有必要默认是使用组件上传。
我的解决方式是在需要使用组件上传的页面增加一个配置文件,并把要开启组件上传的文件写到配置文件里。这种解决方式比较来说已经算简单了。

组件代码更改:
WebbUploadMoudule.cs
第一步:
-----------------------------------------------------
在WebbUpload_BeginRequest方法里面找到
HttpApplication m_application = sender as HttpApplication;
然后增加以下行:
HttpContext context = m_application.Context;

if (ReadXMLConfig(Path.GetDirectoryName(context.Request.PhysicalPath), Path.GetFileName(context.Request.AppRelativeCurrentExecutionFilePath)).ToLower() != "true")
return;
--------------------------------------------------------
第二步:增加以下方法
// 读XML文件
private string ReadXMLConfig(string strFilePath, string sKey)
{
string strFileName = "WebbUpload.config";
string strReturn = "";
if (!File.Exists(Path.Combine(strFilePath, strFileName)))
return strReturn;
XmlDocument oXmlDocument = new XmlDocument();
try
{
oXmlDocument.Load(Path.Combine(strFilePath, strFileName));
XmlNodeList oXmlNodeList = oXmlDocument.DocumentElement.ChildNodes;
foreach (XmlElement oXmlElement in oXmlNodeList)
{
if (oXmlElement.Name.ToLower() == "appsettings")
{
XmlNodeList _node = oXmlElement.ChildNodes;
if (_node.Count > 0)
{
foreach (XmlElement _el in _node)
{
if (_el.Attributes["key"].InnerXml.ToLower() == sKey.ToLower())
{
strReturn = _el.Attributes["value"].Value;
break;
}
}
}
}
}
}
catch (Exception exp)
{
//HttpContext.Current.Response.Write(exp.Message.ToString());
}
return strReturn;
}

配置文件格式如下:
WebbUpload.config
---------------------------------
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="singlefileupload.aspx" value="true"/>
<add key="MutilFilesUpload.aspx" value="true"/>
</appSettings>
</configuration>
---------------------------------
其中的值可以自己根据需要增删

说明:每个ASPX文件对应的开启配置都要放在相应的文件夹内,你也可以自己修改。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-12 16:59 泉水

如果站点统一配置文件并且缓存的话,就更好了,效率更高。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-12 17:17 Wu.Country@侠缘

@泉水
谢谢你的精彩说明!!  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-13 16:24 泉水

呵呵,大侠也让我学到很多东西啊
另外有个地方要注意,就是不能在使用MasterPage的ASPX页面中使用组件,否则你会很郁闷总是出现null的错误,我估计这跟MasterPage的处理流程有关系,因为先处理ASPX页面,然后再转向MasterPage页面处理,所以最后处理的是MasterPage对象,而不是我们期望的那个ASPX页面对象了。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-13 22:38 study

1\为什么可以上传但是进度条窗口提示"未将对象引用设置到对象的引用"?
2\另外,web.config中设置 <system.web>
<identity impersonate="true" />
... ... </system.web>该组建就不能用了
  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-17 22:53 study

怎么没有人帮忙解决一下?  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-18 02:40 浪子风

@泉水
if (ReadXMLConfig(Path.GetDirectoryName(context.Request.PhysicalPath), Path.GetFileName(context.Request.AppRelativeCurrentExecutionFilePath)).ToLower() != "true")
return
为什么我没有AppRelativeCurrentExecutionFilePath属性  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-25 13:40 我123

该组件不能在非虚拟目录下使用,就是说直接把bin放在站点根下的,不行,必须得弄个虚拟目录,不然就提示"未将对象引用设置到对象的引用"  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-25 17:20 Wu.Country@侠缘

兄弟们呀!!真的很报谦呀,我的项目修改内容太多了,前后50多页的修改意见。昏死了,当然,也有对这个组件的修改意见。
实在是没时间修改这个组件!我都快郁闷死了。
大家先自己改改吧,等完了手头的项目,一定好好的把这个组件整理一下。
然而我在自己的项目里一直用这个组件,也没有发现这些问题。对于大家遇到的一些问题会给我一些帮助,也让我在自己的项目里注意一下这些问题。
先谢谢大家了。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-27 13:10 bhy

支持中文吗?因为我的使用中有许多中文文件名  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-27 20:47 bhy

怎么文件传到服务器上之后都改变名字了,变得乱七八糟了,怎么不是原来的名字了。
怎么按照原来的名字保存到服务器上。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-28 10:03 bhy

对于SunriseUpload的分析文章,不能访问了。老大,整理一下,让小妹学习一下。急于实现这样一个算法,可是总是报错,不懂原理呀,没法调试。谢谢了!!  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-04-28 10:03 bhy

对于SunriseUpload的分析文章,不能访问了。老大,整理一下,让小妹学习一下。急于实现这样一个算法,可是总是报错,不懂原理呀,没法调试。谢谢了!!  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-05-10 08:25 zhujunhui

为什么在本地调试的时候有进度条显示,但传到服务器上时,进度条的页面就找不到了,这是怎么回事呀?  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-05-17 15:40 dsh

请问这怎么办呀?
错误消息: 找不到文件或程序集名称“Webb.WAVE.Controls.Upload”,或找不到它的一个依赖项。
我也添加引用了,配置文件也改了,编译也通过,可就是报错!  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-05-17 17:32 Wu.Country@侠缘

可以找到:
Webb.WAVE.Controls.Upload.dll文件吗?
把它添加到项目里去。。。。。。。。。。
如果第二个项目可以通过编译,那么也应该可以运行的呀@!!!
项目之间要设定一下引用关系。。。再试试。。。。。。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-05-17 17:47 dsh

@Wu.Country@侠缘
我也把
"Webb.WAVE.Controls.Upload.dll"也拷到了我的项目bin目录下了呀,运行时报错:
错误消息: 找不到文件或程序集名称“Webb.WAVE.Controls.Upload”,或找不到它的一个依赖项。
--------------------------------------------------------------------------------
Stack Trace:
System.IO.FileNotFoundException: 找不到文件或程序集名称“Webb.WAVE.Controls.Upload”,或找不到它的一个依赖项。文件名: “Webb.WAVE.Controls.Upload” at MOS.newmessage.Button2_Load(Object sender, EventArgs e) at System.Web.UI.Control.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain() === Pre-bind state information === LOG: DisplayName = Webb.WAVE.Controls.Upload, Version=1.1.0.0, Culture=En, PublicKeyToken=null (Fully-specified) LOG: Appbase = file:///E:/MOS/MOS LOG: Initial PrivatePath = bin Calling assembly : MOS, Version=1.0.2328.28032, Culture=neutral, PublicKeyToken=null. === LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). LOG: Post-policy reference: Webb.WAVE.Controls.Upload, Version=1.1.0.0, Culture=En, PublicKeyToken=null LOG: Attempting download of new URL file:///C:/WINNT/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/mos/5f21616b/fdb1d8c/En/Webb.WAVE.Controls.Upload.DLL. LOG: Attempting download of new URL file:///C:/WINNT/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/mos/5f21616b/fdb1d8c/En/Webb.WAVE.Controls.Upload/Webb.WAVE.Controls.Upload.DLL. LOG: Attempting download of new URL file:///E:/MOS/MOS/bin/En/Webb.WAVE.Controls.Upload.DLL. LOG: Attempting download of new URL file:///E:/MOS/MOS/bin/En/Webb.WAVE.Controls.Upload/Webb.WAVE.Controls.Upload.DLL. LOG: Attempting download of new URL file:///C:/WINNT/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/mos/5f21616b/fdb1d8c/En/Webb.WAVE.Controls.Upload.EXE. LOG: Attempting download of new URL file:///C:/WINNT/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/mos/5f21616b/fdb1d8c/En/Webb.WAVE.Controls.Upload/Webb.WAVE.Controls.Upload.EXE. LOG: Attempting download of new URL file:///E:/MOS/MOS/bin/En/Webb.WAVE.Controls.Upload.EXE. LOG: Attempting download of new URL file:///E:/MOS/MOS/bin/En/Webb.WAVE.Controls.Upload/Webb.WAVE.Controls.Upload.EXE.
  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-05-18 08:27 Wu.Country@侠缘

file:///E:/MOS/MOS/bin/En/Webb.WAVE.Controls.Upload/Webb.WAVE.Controls.Upload.EXE
怎么是个EXE文件??
这只是一个组件呀!!
这是一个在ASP.net下使用的组件!  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-05-18 09:18 我123

晕,上传的人一多,C盘windows/temp下的大文件狂多,一天就好几G,清不过来!  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-05-18 10:39 Wu.Country@侠缘

可以自己设定临时目录。
而且可以取得这个临时文件并删除掉。
没办法,临时文件是一定会有的。。。。。。。。。
你可以自己写一个服务专门来删除临时文件!  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-05-18 12:04 nt1980

如何判断在按下UpLoad按钮时,前面的上传控件内有内容??  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-05-18 15:22 dsh

大侠:为什么查看上传的图片会弹出输入网络密码的对话框,谢谢  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-05-18 15:31 Albert Wang

不知你在參考SunriseUpload有無發現且修改此問題,當上傳文件後大約3-4小時後,再次上傳則不成功,好像HttpContext.Current.Request["HttpInputName"]丟失了.
可加斷點在UploadFile.cs的以下語句測試
else if(IsContentHeader(WebbHelper.GetContext().Request[i_name]))
{m_content= WebbHelper.GetContext().Request[i_name];}
  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-05-18 16:11 dsh

大侠:上传的图片文件没有了everyone的权限怎么办呀?谢谢  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-05-18 17:07 Wu.Country@侠缘

@Albert Wang
还真遇到过这个问题。值得参考一下。
但上传文件后3-4个小时,这个时间内发生的事情太多了,不好说到底是什么原因造成的。我会记得试一下的。
因为我们也遇到上传文件时间过长的问题,所以我们准备采用Web Service来上传文件。
相关的文章:
http://wucountry.cnblogs.com/archive/2005/12/28/306725.aspx

@dsh
权限问题与该组件没有关系,应该是服务器的设置问题。

@nt1980
服务器端和客户端都可以验证,具体的参考源代码的这里一段:
foreach(UploadFile m_uploadFile in m_upload.GetUploadFileList("m_files"))
{
if(m_uploadFile==null)continue;
...
}
  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-05-18 17:10 dsh

感谢大侠的帮忙,上面的权限没问题了,不过“找不到文件或程序集名称”错误一直没解决,我新建一个不带类库的项目就没问题,和这有关吗?和项目文件夹的位置有关吗?晕呀!(整整一天了)  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-05-22 11:19 Wu.Country@侠缘

??
可能是你的其它程序集引用不对~!
检查一下你的程序集引用,确保它们都是正确引用的。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-05-30 08:33 Wu.Country@侠缘

目前我正在对这个组件重新开发,因为压力测试没能通过,所以必需重新设计这个组件。在此也对那些使用这个组件并给出建议的人表示感谢。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-03 22:54 ts

Wu.Country@侠缘 :
你好:现在有一个很奇怪的问题,就是我在使用sunriseupload进行上传大文件,运行一段时间后就总会发生getuploadfile取回来的uploadfile为空的情况,而重新启动计算机或者把项目dll重新拷贝到bin目录覆盖就又好了,但运行一段时间还是会出同样的问题,后来我就又试了很多,比如lion的,还有你的WebbUpload,也都存在这个情况,设置都是对的,因为设置好运行项目后开始都很正确,都是在运行一段时间后出问题,我的环境是XP+IIS5.1还有Windows2000 Advance Server+IIS5.1,都有这个问题存在,实在搞得焦头烂额了阿  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-03 23:03 ts

Albert Wang :
似乎我遇到的问题与你很相像,我在调试时发现错误有时出的地方不一样,我跟踪看到有一次是在AnalysepreloadedEntitybody函数体中找StatstIndex和EndIndex时,name参数值最后几个字符是folder,前面还有一串,记不清了,而这个name在preloadEntityBody中不存在,因此最后返回val为空,但又有一次出错我跟踪却发现又不是这里了,这里取到了val的,但后面还是出错,我就郁闷了,错误都要移动的话我就实在没辙了  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-03 23:05 ts

不知道会不会和IIS有关,不知道换个版本,在IIS6下面会不会有这个问题  回复   

# 为什么本地测试都是正常,放在公网还是不能传超过400k的文件? 2006-06-04 21:50 queen2water

大侠:

为什么本地测试都是正常,放在公网还是不能传超过400k的文件?

另外,非要放在虚拟目录根下面吗?

  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-05 08:37 Wu.Country@侠缘

@queen2water:
如果可以传文件,那么大小的限制应该在web.config里配置一下。
一定要放在可运行程序的bin目录下。IIS要以程序的形式加载它。
@Albert Wang :
@ts:
你们所说的问题可能是个严重的BUG,然而目前我没有遇到过。目前正在写第二个版本,上传传速度比我以以前的那个快2.5倍左右。可能在下个星期可以发布测试版。
我会测试一下你们所说的问题。希望能解决。谢谢你们提出的问题。
  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-05 15:55 ts

我昨天试了一下assistedsolution.slickupload,没有我前面提到的那个错,而且感觉她的速度和稳定性都很不错,就是一个缺陷,没有免费的,我只有评估版,不知道有没有时间限制


Wu.Country@侠缘:
测试时可以这样哈,就是先配置好一个环境,上传一些文件,然后不要关IIS,也不要关网页,直接休眠,过7,8个小时开机再试,应该就不行了,我现在不清楚是不是因为IIS5.1这个版本的原因  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-06 08:34 Wu.Country@侠缘

哦,,,,这样呀!!!!
行,有时间我试试。。。。。。。。。。

但是,网页也不关?????
这样可能会出错!因为你的页面里的上传进度条是注册在Application里的。如果很长时间没有运行程序,可能会丢失Application里的数据,进而会引向其它的内容,当然会是什么我也不清楚了。不管怎样,这个问题值得注意一下。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-06 16:26 果果er

泉水怎么连联系方式都不留啊,我现在是遇到组件跟FCKEditor的上传冲突了(其实就是跟.NET自带的上传冲突了吧),找不到办法解决。

泉水的说明没看懂呢?是不是按泉水的说法就可以不在web.config里添加HttpMoudle了?那样应该就不会互相影响了。(我用的iframe上传大文件)



再看了下,好像懂原理了?如果不是指定的上传页面,就直接返回?试试看。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-06 22:25 学习.NET

我在大约2005年1月份时用 sunriseupload,也是运行一段时间后就总会发生getuploadfile取回来的uploadfile为空的情况,调试跟踪发现 HttpContext为空,也就是没有请求了,不知何故,当时也没有深入考虑,就不用 sunriseupload了。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-08 08:37 Wu.Country@侠缘

如果只是getuploadfile为空的话,那问题还好解决。这时的文件已经上传成功了,只是在页面的取回上存在小问题。(猜测)
我在第二个版本的开发中,经过多次的调试也明白了不少东西。例如进度条为什么会消失,表单事件为什么会消失,为什么有时会出现找不到服务器等,很多错误在开发中都遇到过。
有些问题可以通过修改代码解决,但有一些也是不好办的。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-08 17:26 泉水

我来了:)
我现在的网站用的是大侠的组件,我自己改动了一下,现在运行比较稳定,没有出现为NULL的情况。

我的QQ59375328
email:quanxu#163.com  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-08 17:28 泉水

to: 浪子风

你的问题应该是版本问题,我是在2.0的环境下调试的。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-09 08:31 Wu.Country@侠缘

我的第二个版本快发布了,现在在做压力测试。
有机会也试试,呵呵。。。。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-11 20:53 zhujunhui

为什么在本地调试的时候有进度条显示,但传到服务器上时,进度条的页面就找不到了,这是怎么回事呀?  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-12 10:26 Wu.Country@侠缘

要看具体的情况。进度条用的是一个HttpHandler,不是页面,所以页面找不到,应该是其它的错误造成的。  回复   

# 救命啊,无法在虚拟主机中使用您的组件.. 2006-06-14 08:46 samsmhy

侠缘大哥您好,您的上传组件我用在歌曲上传中,在本地测试都好的,开发测试环境
操作系统:Windows XP Professional(cn)
开发工具:Microsoft Visual Studio.NET 2003
WEB服务器:IIS 5.0 & .NET Framework 1.1
浏览器:Internet Explorer 6.0/
可上传到asp.net环境的虚拟主机下,就出现错误,无法用您的控件上传,现在客户在催,我也很急,不知您能否帮我看看,是什么问题.我的qq:59696465,email:smhy8187@126.com.期盼您的恢复,谢谢.  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-14 10:59 Wu.Country@侠缘

如果本地测试可以的话,上传到服务器上后,一般只会因为速度问题出现超时错误。完全不能使使用的话,那就是服务器的配置与应用程序配置有问题。
很报谦目前我不能给你很详细的回复,新的组件出现极郁闷的错误,也是搞得我一头雾水,几天没睡好,郁闷。。。。。
你可以发布你的错误信息,看有没有其他热心的朋友可以帮助你的。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-19 14:13 samsmhy

谢谢侠缘大哥的热情答复,虽然用Webb.WAVE.Controls.Upload不行,但在您的另一篇文章中,我用了sunriseupload可以把歌曲传到虚拟主机去了,但不是很稳定,有时可传,有时不可传,不知对于大文件上传该用什么组件才能获的比较理想的效果?  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-06-21 16:59 Wu.Country@侠缘

我不知道你要传多大的文件,我这里至少是200MB,多则500MB。
所以必须考虑上传的稳定性。
这段时间就为这个测试都郁闷几天了,一天只能测两三次,每传一个都要近两个小时。(On the Internet)  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-07-23 12:39 上游

请请用这个原代码怎么加进去上传时判断文件大小如果太大弹出警告提示框并停止上传,请问这样如何修改  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-07-24 10:37 过程

我用了你的组件,在本机上测试速度还行,可放到服务器上进行远程上传的时候速度就有点慢了,还有就是如果放在WINXP操作系统的服务器上时,上传文件就会出现错误,如果是2K的话就不会出现,不知是何原因  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-07-24 11:29 Wu.Country@侠缘

具体问题具体分析。
出现错误的原因很多,只是2K与XP不同还不能清楚的知道错误在什么地方。
然而我的组件是在XP Professional下+VS.net 2003开发的。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-08-04 15:46 smallnews

请教侠缘老大~
为什么我上传到目录后文件名就改变了呀?有没有办法让上传后文件名与原文件名相同呀?  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-08-07 15:47 fan

请问侠缘 ,通过什么方法可以把进度条嵌入到页面中间显示,你的程序可以在我XP+dotnet 2.0+VS2005上跑的很顺,谢谢。

另外可以发 Microsoft.Web.UI.WebControls.dll给我吗。

Email:fan52027@gmail.com

谢谢了。
  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-08-07 16:21 Wu.Country@侠缘

该组件已经升级为2.0,请访问下面的文章:
http://www.cnblogs.com/WuCountry/archive/2006/06/15/426535.html

@fan
Microsoft.Web.UI.WebControls.dll
可以在MS的下载中心得到,而且有很好的帮助说明。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-08-07 17:49 Mic

请问fan是怎么在dotnet2.0上运行的?我在上面不能使用:(  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-08-08 08:37 Wu.Country@侠缘

你用WebbUpload2.0试一下,虽然2.0也是在2003下加.net1.1开发的,但我在.net2.0下运行正常。  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-08-18 13:48 吴建明

怎么文件小了,比如小于1k,反而不能正确上传?  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-08-21 17:42 jionk

可以正确上传文件,但原来没有用此组件的 HtmlInputFile 控件就出现问题!!

返回的值都是null~~ 请问应该怎么解决这种问题  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-08-23 11:40 高飞

不知道为什么我的总是出错呢?System.NullReferenceException: 未将对象引用设置到对象的实例。啥意思  回复   

# re: ASP.net下大文件上传的解决方案及WebbUpload组件源码 2006-08-23 15:07 高飞

大哥,你的版本都不知道那个能用呢?
我用的是6月份的,怎么还不如1月份的好用呢?
不知道您老怎么控制的,现在都是做好了吗?
发一个大家都能用的吧。

原文地址:https://www.cnblogs.com/huashanlin/p/484857.html