Wu.Country@侠缘

勤学似春起之苗,不见其增,日有所长; 辍学如磨刀之石,不见其损,日所有亏!

WebbUpload2测试版--HTTP协议下,用IE上传大文件解决方案,[附源码]

原Webb.WAVE.Controls.WebbUpload参考文章,附源代码下载,本测试版暂无源码。
http://wucountry.cnblogs.com/archive/2006/06/14/306725.html


请先参考上面的内容。
新的WebbUpload2测试版:
上传过程:
Uploading_8MB.JPG

上传完成,但文件正在COPY的时候。如果直接存放到指定目录,不另存文件,那么对于文件来说,可以省去很多时间(大概30秒)。
Upload_finished.JPG

相关说明在下载文件内。
http://files.cnblogs.com/WuCountry/WebbUploadSample2.zip

测试报告文件:
http://files.cnblogs.com/WuCountry/Load%20test%20result.zip

下载文件说明:
1、只提供了WebbUpload2的测试版,即Debug版本。建议不应该在正式项目中使用这个测试版,因为本人在测试中遇到过很多问题,由于时间关系,还没来得及修改。本人会尽快修改一些BUG并尽快发布RELEASE版本。
2、免费组件。
3、请在使用该组件时注意:使用该组件过程中,不管什么原因造成的任何损失,由使用者自己负责,本人不负任何责任。

2006-07-06附上源码

说明:
1、添加源码:http://files.cnblogs.com/WuCountry/Webb.WAVE.Controls.Upload2.zip
2、添加上传日志。
3、添加上传开始时间。
4,修改一个BUG,特殊情况下临时缓存数据没能正确的写入到Context时去。
5、修改临时内存数据流,使内存占用大大降低。
6、公开免费组件,不提供任何技术支持,不负责任何使用该组件所造成的损失。
7、算法及组件流程分析可以参考下面的文章:

   http://wucountry.cnblogs.com/archive/2005/10/12/305688.html
   http://wucountry.cnblogs.com/archive/2005/11/07/305653.html (要研究算法,请先参考本文)
   http://wucountry.cnblogs.com/archive/2005/11/07/305651.html
   http://wucountry.cnblogs.com/archive/2005/11/07/305651.html

所有内容仅供参考!

2006-09-22修改了源代码。一此前发现的一些BUG已经修改。

posted on 2006-06-15 14:28 Wu.Country@侠缘 阅读(7073) 评论(136)  编辑 收藏

评论

#1楼 [楼主] 2006-06-15 14:33 Wu.Country@侠缘      

感谢大家测试使用。本人会尽快修改一些BUG,优化一下代码后,发布该组件第二版的源代码。如果在测试中发现任何问题的,感谢您这此提出,本人会立即修改,使该组件更完善。   回复  引用  查看    

#2楼  2006-06-18 13:57 AlphaWu      

请问楼主这个可以在.Net2.0下面跑么?   回复  引用  查看    

#3楼 [楼主] 2006-06-19 08:35 Wu.Country@侠缘      

我没有试过2.0上是否可用。
但上一个版本有人修改过后,可以在2.0上运行。
如果要在2.0上运行,可以修改一下源代码。
源代码会在晚些时候发布。   回复  引用  查看    

#4楼 [楼主] 2006-06-19 10:54 Wu.Country@侠缘      

又发现一个郁闷的BUG!
当网络速度极差的时候,例如每次只能从上传的Context里读取少于Context Head长度的数据时(小于100字节),那么算法完全错误,导致上传全部失败。
这是严重影响上传的BUG,因为不能保证所有的上传都至少有1K以上,而且Context head的长度也不一致,不能一概而论。因此可能要考虑重新计算。
这将导致这个组件的第二的算法应该是个失败的算法。虽然在LAN里确实很快,然而为了稳定,也不得不放弃快速了。
极郁闷中。。。。。。。。。   回复  引用  查看    

#5楼  2006-06-22 09:47 嘿嘿 [未注册用户]

NickLee.Common.Upload组件也不错   回复  引用    

#6楼  2006-06-23 16:30 DY_FS [未注册用户]

使用你旧版出现了一点问题.希望大侠解答

m_file.ClientFullPathName
返回的路径出现的中文是乱码的.
我用
Dim UTF8 As System.Text.Encoding = System.Text.Encoding.UTF8
Dim GB2312 As System.Text.Encoding = System.Text.Encoding.GetEncoding("gb2312")
Dim name = GB2312.GetString(UTF8.GetBytes(m_file.ClientFullPathName))

得到的中文.大部不会乱码.但一部分中文变成"?"

.FileName
得到的名称是临时文件的名称..

那么到底怎样才可以获得不乱码的文件名?

在工程编码全部是GB2312之下
  回复  引用    

#7楼  2006-06-23 16:32 DY_FS [未注册用户]

还有一个问题

在把文件从临时目录写入硬盘时..进度条不能动了..这里能做做成会动的进度条吗?   回复  引用    

#8楼 [楼主] 2006-06-23 16:42 Wu.Country@侠缘      

旧版本有源代码,你可以随意的修改成自己想要的内容。字符集问题利用楼上自己说的方法就可以解决了。
可以在源文件的WebbRequestStream.cs文件中,大概在160行处把m_fileContent[2]的内容用GB2312取回为字符串就行了。

关于进度条不动的问题其实很简单,因为它的状态已经是完成的,所以只用显示100%,然后告诉用户,正在COPY或者MOVING文件就行了。在第二版中已经修正。

[========2006-06-23,特别说明========]
////////////////
新版的几个问题:
目前我只针对大文件上传做修改,因此添加以下几个内容:
1、添加上传日志。
2、添加上传开始时间。
另,修改一个BUG,特殊情况下临时缓存数据没能正确的写入到Context时去。已经修正。
  回复  引用  查看    

#9楼  2006-06-23 17:43 DY_FS [未注册用户]

我在UploadFile添加了一个保存到数据库的函数
因为数据库和网站的主机不是同一台主机
- -.导致这个过程很慢.我是菜鸟..写入数据库过程的进度条不会做..
  回复  引用    

#10楼  2006-06-26 16:48 DY_FS [未注册用户]

大侠救命~~~不行哦~~一直是乱码

不是全部乱.是部分字变成了"?"

例如 11月11日
变成 11?11?

是不是
Dim UTF8 As System.Text.Encoding = System.Text.Encoding.UTF8
Dim GB2312 As System.Text.Encoding = System.Text.Encoding.GetEncoding("gb2312")
Dim name = GB2312.GetString(UTF8.GetBytes(m_file.ClientFullPathName))
这样转有问题??


WebbRequestStream.cs文件中,大概在160行处把m_fileContent[2]的内容用GB2312取回为字符串就行了。?说具体点可以吗?
  回复  引用    

#11楼  2006-06-26 16:59 DY_FS [未注册用户]

调试到160行附近获得的m_fileContent[2] = filename=""
为什么是空的?   回复  引用    

#12楼  2006-06-26 17:08 DY_FS [未注册用户]

180行附近
this.m_contentTextBody.AddRange(Encoding.GetEncoding("gb2312").GetBytes(sb.ToString().ToCharArray()));
事件完满解决- -....   回复  引用    

#13楼 [楼主] 2006-06-27 17:16 Wu.Country@侠缘      

下个星期发布这个版本的源码。。。。。
测试了这长时间,修修改改的几个星期,人都快疯掉了。。。。。。
郁闷。。。。。。。。。。。。。。。。。。。。。。。。。   回复  引用  查看    

#14楼  2006-07-05 15:05 tianjj [未注册用户]

侠缘的精神,值得我们赞一个。兄弟,好样的。
关注。   回复  引用    

#15楼 [楼主] 2006-07-05 17:07 Wu.Country@侠缘      

这几天没能登录上博客,如果没什么问题,我明天一早就发布第二版的源码。   回复  引用  查看    

#16楼  2006-07-05 17:56 tianjj [未注册用户]

期待中。   回复  引用    

#17楼  2006-07-06 16:48 tianjj [未注册用户]

把Webb.WAVE.Controls.Upload2.zip的文件履盖原来就可以了吗?
  回复  引用    

#18楼 [楼主] 2006-07-07 08:24 Wu.Country@侠缘      

不可以!
请打开包,重新建立项目,创建引用关系并编译!
对于一些不需要的功能,可以注释掉。具体使用方法请先下载
http://wucountry.cnblogs.com/Files/WuCountry/WebbUploadSample2.zip
这是一个例子。参见例子的使用。   回复  引用  查看    

#19楼  2006-07-19 15:42 fun [未注册用户]

能不能考虑加上对上传文件后缀名的限制   回复  引用    

#20楼  2006-07-20 18:21 itking [未注册用户]

WebbHelper.cs中的这个函数,得不到进度条的源码是因为什么?
public static byte[] LoadAssemblyFiles(string i_filename)
{
if (i_filename == null)
{
throw new ArgumentNullException("i_filename");
}
string fullFileName = RESOURCE_FILE_PREFIX + i_filename;
byte[] m_fileContent;
// using(Stream stream=typeof(WebbHelper).Assembly.GetManifestResourceStream(i_filename))
// {
// m_fileContent = new byte[stream.Length];
// stream.Read(m_fileContent, 0, m_fileContent.Length);
// }


Stream stream = typeof(WebbHelper).Assembly.GetManifestResourceStream(fullFileName);
我跟踪后到这里,跟踪不到结果了
m_fileContent = new byte[stream.Length];
stream.Read(m_fileContent, 0, m_fileContent.Length);
stream.Close();
return m_fileContent;
}   回复  引用    

#21楼  2006-07-21 11:12 itking [未注册用户]

请问:
进度条的页面显示出错,是那里没有配置好?   回复  引用    

#22楼  2006-07-23 12:42 上游 [未注册用户]

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

#23楼 [楼主] 2006-07-24 08:42 Wu.Country@侠缘      

@itking
进度条的错误有两种,一是找不到页面。可能是脚本错误。
另一个则是运行错误,可能是Config配置不对,或者其它的运行错误。

@上游
你所说的情况应该在客户端用脚本来实现,一般用ActiveX来实现,这有一小段代码。但并不能保证都可以实现,因为并不是所有的客户端都可以运行Active的。
function GetSize(file)
{
var fso=new ActiveXObject("Scripting.FileSystemObject");
var f=fso.getFile(file);
return fso.getFile(file).size;
}

另一个办法是在服务器上,你仔细查看代码,会发现源代码里有关于上传文件大小的限制。   回复  引用  查看    

#24楼  2006-07-25 11:57 AMao [未注册用户]

在页面上放三个控件
1)<input type = file runat = server>
2)<asp:Button runat="server" Text="Button" ></asp:Button>
3)<asp:TextBox runat="server" TextMode="MultiLine"></asp:TextBox>

问题:
在TextBox输入文本,输入回车进行换行,形成有格式的文本(就是有段落性),点击button回抛到服务器时,发现原来如果是单回车,换行符不见了,如果是两个或两个以上,会减少一个回车。在服务器上找不到“\r\n”了
  回复  引用    

#25楼  2006-07-25 23:48 上游 [未注册用户]

怎么样加入当有数据时就是有传输速率时再显示这个进度条这个如何做的!我是想当开始时没有数据的情况下不显示这个进度条可能对这个进行改进啊?   回复  引用    

#26楼  2006-08-07 15:27 AMao [未注册用户]

Wu.Country@侠缘 麻烦看看我的问题。
在页面上放三个控件
1)<input type = file runat = server>
2)<asp:Button runat="server" Text="Button" ></asp:Button>
3)<asp:TextBox runat="server" TextMode="MultiLine"></asp:TextBox>

问题:
在TextBox输入文本,输入回车进行换行,形成有格式的文本(就是有段落性),点击button回抛到服务器时,发现原来如果是单回车,换行符不见了,如果是两个或两个以上,会减少一个回车。在服务器上找不到“\r\n”了
  回复  引用    

#27楼 [楼主] 2006-08-07 16:17 Wu.Country@侠缘      

@AMao
对于你的问题,我专门进行了测试,没有发现问题,所有的"\r\n"都是正常有的。请你再试试看,看是不是你的自己的代码有问题。

BUG修改说明:
1、上传速度的计算错误,在取时间时,应该取TotalSeconds,而不是Sedonds,因此在UploadInstance.cs的大概33行处,应该修改为:
int m_spanSecond = Convert.ToInt32(this.UploadTimeSpan.TotalSeconds);

2、如果上传文件的文件名过长(>50个字符),会出现进度条被拉挤出对话框的现象,修改为只截取30个字符。对相关的JS代码进行修改就行了。
(本次BUG修改没有附带源码,请读者自己下载原来的代码文件后做相应的修改。)   回复  引用  查看    

#28楼  2006-08-08 11:49 AMao [未注册用户]

抱歉。这个问题是在老版本是出现,在新版中确实不存在,老版中是否有解决方法?

  回复  引用    

#29楼  2006-08-08 12:55 fan [未注册用户]

hi,Wu.Country@侠缘 ,我下载了你的 exmple,可以顺利的运行,我又下载了你的源码,我想重新生成Webb.WAVE.Controls.Upload2.dll,在vs2005中,我打开了你的源文件,怎样才能生成Webb.WAVE.Controls.Upload2.dll。thanks   回复  引用    

#30楼 [楼主] 2006-08-08 14:56 Wu.Country@侠缘      

@AMao
旧版本我已经没有再修改BUG了,而且它的效率远远不及新版本,所以我建议你用新的。而且都有源代码,可以自己试着修改。

@Fan
源代码是一个DLL项目(Project),你只用把它添加到一个解决方案(Solution)里,然后重新编译就可以得到DLL文件了。再具体的方法你可以参考一下帮助。   回复  引用  查看    

#31楼  2006-08-08 15:09 fan [未注册用户]

Thanks,侠缘,2.0的效率确实要比前一个版本高. 还有一个问题,就是如果上传的文件大小>web.config里的MaxRequestSize,就出现黄页,我看了你上面的回复,觉得如果使用Active不太现实,请问在源码哪里可以限制文件的大小哪?   回复  引用    

#32楼 [楼主] 2006-08-08 16:57 Wu.Country@侠缘      

在UploadModule.cs的135行(大概):
long m_totalRequsetSize = Convert.ToInt64(m_workRequest.GetKnownRequestHeader(11));
if(m_totalRequsetSize>this.m_uploadInstance.m_MaxSize)
{
throw new Exception("Out of upload file size.");
}
这里是我故意抛出地异常,你可以自己修改一下。但要注意:
因为文件不没有上传完,所以HttpContext里的数据也是不完整的,所以你不能希望在这里让页面返回。
你可以做页面跳转,让当前的上传进程中止掉。其它的方法可能不行。   回复  引用  查看    

#33楼  2006-08-10 15:22 wowo [未注册用户]

1、上传速度的计算错误,在取时间时,应该取TotalSeconds,而不是Sedonds,因此在UploadInstance.cs的大概33行处,应该修改为:
int m_spanSecond = Convert.ToInt32(this.UploadTimeSpan.TotalSeconds);


没有这句啊

还有如何保存成上传时的文件名而不是5e42d160-1b28-49a9-b18c-1d071340771d.rem这种
  回复  引用    

#34楼 [楼主] 2006-08-10 16:17 Wu.Country@侠缘      

1、当然没有这一句,要自己修改一下。把源代码看一下就明白是什么意思了。

2、有一个SaveAs()函数,调用它就行了,参数是新的文件名。
但要注意:其实这个函数是把上面的文件Copy一份,所以当文件很大的时候,这并不是一个好方法,而是直接把文件存在目标目录里,然后把FullNameOnClient放到数据库,这样一来效率高很多,而且也安全。
(用户是不能直接请求REM文件的。)   回复  引用  查看    

#35楼  2006-08-10 21:07 wowo [未注册用户]

throw new Exception("Out of upload file size.");

这句我想改成直接是点击取消按钮时的效果,但是用System.Web.HttpContext..Response.Write("<script>javascript:Cancel_Click();</script>");

报“缺少对象”,怎样才可以实现?   回复  引用    

#36楼  2006-08-10 21:11 wowo [未注册用户]

因此在UploadInstance.cs的大概33行处,应该修改为:
int m_spanSecond = Convert.ToInt32(this.UploadTimeSpan.TotalSeconds);

UploadInstance.cs的大概33行处是这段,而且没法改成你说的那样,整个工程里也没有m_spanSecond这个词,是不是搞错了?
get
{
if(this.UploadTimeSpan.Seconds>0)
{
if(this.UploadTimeSpan.Seconds>0)
{
return this.m_currentSize/this.UploadTimeSpan.Seconds;
}
else
{
return 0;
}
}
else
{
return 0;
}
}   回复  引用    

#37楼 [楼主] 2006-08-11 09:09 Wu.Country@侠缘      

@wowo
你的这些做法都是一些结构错误。你对上传是使用的HttpModule还不是很了解,其实在所给的函数参数中已经包含了当前用户语法的HttpContent,你可以直接调用。
然而你要注意,在HttpModule里,页面逻辑是不存在的,所以你就算是用了输出函数,也是无效的,因为此时的页面数据都还没有处理完,你的页面函数调用当然全部是无效的。
这时具体的做法我还没有试过,因为我先抛出这样的异常,准备在以后的工作中再做处理。你可以自己先试着处理一下。
第二个问题,其实也不难,你还没有看明白代码。
这一句:this.UploadTimeSpan.Seconds>0是错误的,修改为:
int m_spanSecond = Convert.ToInt32(this.UploadTimeSpan.TotalSeconds);
再来用if(spanSecond>0)来做处理。否则上传速度计算错误。   回复  引用  查看    

#38楼  2006-08-11 09:50 wowo [未注册用户]

这个不能直接把BIN提到站点根直接用,必须做虚拟目录,否则会出现“未将对象引用设置到对象的实例”在上传文件的页面上这句foreach(UploadFile m_file in m_files)
  回复  引用    

#39楼  2006-08-11 11:21 wowo [未注册用户]

在程序里设了UploadModule.M_MaxSize之后怎么还有缓存的?在代码里再次动态改变后这个值还是原来的   回复  引用    

#40楼 [楼主] 2006-08-11 14:45 Wu.Country@侠缘      

@wowo
这几个问题我有空再分析一下,具体的情况可能要测试一下,因为我在实际使用中也遇到过类似的问题,但原因不是你所说的。
关于文件上传大小问题,我一直就采用的是web.config配置方案,没有用其它的方法来限制,如果可能,你可以自己修改代码来控制每个上传的文件大小。
谢谢提出的问题。   回复  引用  查看    

#41楼  2006-08-12 12:36 netshizi [未注册用户]

发现一个问题,文件上传后在文件夹里的文件名是类似7ec732b5-54a9-4e0f-8492-6fa7ba05b1a0.rem的样子,尺寸是和原来文件一样的,不知道是怎么回事啊?   回复  引用    

#42楼 [楼主] 2006-08-14 09:05 Wu.Country@侠缘      

你用MoveTo方法,而不用SaveAs方法,或者你看一下源代码,小修改一下就行了。
我说明一下原因,因为我的项目里要上传很大的文件(500MB以上),所以直接把临时文件做为最后的文件使用。
而且在出现上传错误时,也没有删除这个文件(想在以后恢复这个上传)。
你可以在文件上传完成后,删除这个文件。当然,得是在你已经把文件保存到其它地方去了。
对于小文件(小于10MB)的,重新保存一份花不了多少时间,所以无所谓了。
但对于很大的文件,在服务器忙的时候,重新保存一份可能要几分钟。
所以,能省就省了,直接用临时文件了。   回复  引用  查看    

#43楼  2006-08-14 15:44 wowo [未注册用户]

发现临时文件不能自动出现在设置的temp路径下,总是在当前站点下,里面故意抛出异常后就留在站点下面了,temp路径下是空的   回复  引用    

#44楼 [楼主] 2006-08-14 16:16 Wu.Country@侠缘      

临时目录可以自己设定,默认就是当前目录。
上面已经解释过了,因为我的项目里不想重新保存文件,所以把文件直接存在指定目录了。省了另存为这一步。   回复  引用  查看    

#45楼  2006-08-14 21:03 wowo [未注册用户]

我改过临时路径的保存位置后还是会出现在当前目录,这个到底在哪里可以直接改的?   回复  引用    

#46楼 [楼主] 2006-08-15 09:35 Wu.Country@侠缘      

UploadModule.cs
27:private static string M_TempPath= Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath,"Temp");

132:this.m_uploadProcess.TempPath = this.m_uploadInstance.m_tempPath;

自己跟踪一下就什么事情都清楚了。有源代码自己可以做很多事情的。甚至你可以自己理解一下逻辑,然后重新写一个上传组件。我就是看了SunriseUpload的源代码后自己写的。   回复  引用  查看    

#47楼  2006-08-15 12:44 fan [未注册用户]

侠缘,你的2.0对文件上传以后名称做了修改,变成了*.rem文件,我想实现:等上传完成后,调用我刚上传的文件(比如我在服务器上对新上传的这个文件改后缀名等)。还有如果是有两个用户,我还要分清这些文件是属于那个用户的,是不是还要将文件名数据库。
能不能给一个简单的思路。谢谢   回复  引用    

#48楼 [楼主] 2006-08-15 13:55 Wu.Country@侠缘      

如果要分清是哪个用户的话,那最好是用数据库了。反正数据库只保存一个文件路径,这样也方便。要修改上传文件的扩展名也简单,在SaveAs里给定文件扩展名就行了。   回复  引用  查看    

#49楼  2006-08-15 17:09 minghe [未注册用户]

SingleUpload中
小的文件上传不运行 Button1_Click MoveTo不能起作用
大的文件才放到UploadedFiles下。
这样存放太烦恼了。
  回复  引用    

#50楼  2006-08-16 11:05 redleaf [未注册用户]

侠缘,我想请教下,如果说我要限制上传文件类型,那么该如何做比较合适。
我现在是这样想的:
在UploadProcess.cs类AnalyzeContentHeader中获取当前文件的扩展名,跟允许上传文件类型进行比较,如果不匹配,则弹出提示,并且终止上传。但是如何才能把匹配结果反映到页面上,这个问题我不知道该怎么处理了。   回复  引用    

#51楼  2006-08-17 09:38 fan [未注册用户]

侠缘,有个问题想请教你,我想在Button1_Click中加一段代码,判断上传的文件类型,然后根据类型的不同,再调用不同的程序。
获取文件类型:string Extension = Path.GetExtension(Path.Combine(m_path, Path.GetFileName(m_file.FullPathOnClient)));

用 switch(Extension)
case “.rmvb”:
{这里是要执行的程序}比如:

//申请类的实例
code cd= new code();
cd.encoder(); 就是这里发现不执行,不知道为什么,上传成功后,却不执行上面的程序,是什么原因哪?   回复  引用    

#52楼 [楼主] 2006-08-17 10:58 Wu.Country@侠缘      

@minghe
自己试看修改代码改一下吧,我的项目里在这样要求的,所以就一直这样用了。

@redleaf
不要在UploadProcess中判断文件类型,这样就算你得到了文件类型也不能中止上传进程的,只能转向或者抛出异常。最好在客户端用JS来判断要好一些。
文件长度则用转向来判断好一些。

@fan
先判断一下Button1_Click事件有没有发生。(用一个Trace或者输出就知道了。)
再看一下case的对象是不是一至的,例如大小写,是否有点等。
  回复  引用  查看    

#53楼  2006-08-18 10:03 yuanws6456 [未注册用户]

请问上传文件大小和文件格式在哪控制,
我想限制上传大小和文件格式   回复  引用    

#54楼  2006-08-18 10:06 yuanws      

请问在哪修改上传文件大小和格式?   回复  引用  查看    

#55楼  2006-08-21 16:11 fan [未注册用户]

侠缘,我放到测试服务器上做了一个测试如下:
所有的文件都可以上传成功,数据如下:
      1M:进度条在4KB/S到24KB/S之间跳转,所需时间大概一分种
      5M:进度条在24KB/S到318KB/S之间跳转,时不时没有时间条和进度条,所需时间大概3分钟
      10M:进度条在29KB/S到58.66KB/S之间跳转,时不时没有时间条和进度条,所需时间大概5分钟
      15M:开始无时间条和进度条,5%以后进度条在28KB/S到30KB/S 之间跳转,10%以后在160KB/S到1.28MB/S之间跳转,所需时间大概6分钟
      20M:进度条在19.6KB/S到2.79MB/S之间跳转,有时候会出现12MB/S,基本保持在100KB/S左右,所需时间9分钟.
      25M:进度条在33.45KB/S到13MB/S之间跳转,所需时间大概需要15分钟
      30M:进度条在38KB/S到24MB/S之间跳转,所需时间大概需要16分钟
      35M:进度条在14KB/S到19.67MB/S之间跳转,所需时间大概需要17分钟
      40M:进度条在36KB/S到9.89MB/S 之间跳转,所需要时间大概需要18分钟
      45M:进度条在43KB/S到30.17MB/S之间跳转,所需时间大概需要20分钟
      50M:进度条在28KB/S到19.58MB/S之间跳转,所需要时间大概要23分钟

=======================
为社那马会有这种情况出现哪,速度跳跃的很大   回复  引用    

#56楼  2006-08-23 14:46 高飞 [未注册用户]

System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 55: string m_path = Path.Combine(MapPath("."),"UploadedFiles");
行 56: HtmlInputFile m_file = this.FindControl("m_file") as HtmlInputFile;
行 57: string m_filePath = Path.Combine(m_path,Path.GetFileName(m_file.PostedFile.FileName));
行 58: m_file.PostedFile.SaveAs(m_filePath);
行 59: }

什么原因呢?
  回复  引用    

#57楼  2006-08-23 14:49 高飞 [未注册用户]

你的源码里面,保存的文件名怎么都是rem格式?怎么修改呢?
  回复  引用    

#58楼  2006-08-26 11:45 wongchenlung [未注册用户]

大侠,组件挺好用的,不过为什么项目中以前的html上传控件提交失败?
不能兼容以前的控件吗?
我测试你的演示程序中UploadTest.aspx页面也是同样的问题,能不能解决,如何解决?   回复  引用    

#59楼  2006-08-28 11:07 xcy [未注册用户]

在UPLOADSTATUSHANDLER文件中,那个static string m_htmlhand =@""
那个@是什么意思啊,起什么作用呢 ,c#不是很懂,^_^   回复  引用    

#60楼  2006-08-30 16:33 allenyz2001 [未注册用户]

问一下,这个能不能在vs2005,net2.0 win2000下面运行呀,我下载后,一运行,就是“该页无法显示”找不到服务器的错误,文件上传不上去,
不知道是什么原因!大侠能帮忙弄弄吗,   回复  引用    

#61楼  2006-09-06 01:10 mike[匿名] [未注册用户]

我下载了这个组件后做了一些修改,并应用了ajax技术,你们可以去http://www.fmaker.com/up_index.htm
看看,想要源码的,可以发邮件到
wolf800@163.com
来根我要,呵呵
qq:174523323   回复  引用    

#62楼  2006-09-09 22:56 wowo [未注册用户]

如果不选择文件直接点上传报错   回复  引用    

#63楼  2006-09-14 15:07 ptcgh [未注册用户]

公布的源代码我编译后运行上传某些文件不成功,但是使用sample里面的那个webb.wave.upload2。dll却都可以上传,不知是什么原因   回复  引用    

#64楼  2006-09-21 09:54 smallnews [未注册用户]

能请教一下各位,为什么我一用了大侠的上传组件,ASP.NET里面的HtmlInputFile控件就用不了呀?有什么办法让两者兼用吗?(是不是因为修改了WEB.CONFIG的原因呀?因为我把加入里面内容删了那控件就可以用了....)   回复  引用    

#65楼  2006-09-21 11:21 waner [未注册用户]

汗.狂郁闷的问题..
如果把button放input file前面会导致上传错误..

仔细测试了..原来是丢了input的内容,好象是传了一半,然后就传另外一个文件了..传两个只传了一个上去..另外一个在TEMP躺着..   回复  引用    

#66楼 [楼主] 2006-09-21 11:33 Wu.Country@侠缘      

很抱谦,这个组件里确实存在一些BUG。
楼上说的这个BUG我已经发现了,而且已经修改,但没有发布修改后的代码。
关于上面说到的这个BUG,只用把TEMP清理一下就行了。这个BUG还在上传很小的文件时出现(就一个文件),那是因为文件太小,没有放到到Context里,而还在临时缓存里。
要修改的代码大概在:
UploadModule.cs 的 156 行
if (!m_workRequest.IsEntireEntityBodyIsPreloaded())
把后面加一个else,并且在里面清理缓存。

对此BUG表示抱谦!
也希望其他正在使用该组件的用户能理解组件中存在BUG,以及一些还没有发现的BUG! 谢谢!

  回复  引用  查看    

#67楼  2006-09-22 16:07 GoWest [未注册用户]

UploadModule.cs 的 156 行
if (!m_workRequest.IsEntireEntityBodyIsPreloaded())
把后面加一个else,并且在里面清理缓存。
-----------------------------------
能说得清楚些?给个修正代码吧?正为这事郁闷呢   回复  引用    

#68楼  2006-09-22 16:59 GoWest [未注册用户]

发现一个问题:上传一个小文本文件的时候(<10K),失败,但没有任何出错提示。结果是:文件已经上传到了Temp目录(默认是网站根),但没有复制到UploadedFiles里。
没有出错提示。   回复  引用    

#69楼  2006-09-26 17:34 hilic [未注册用户]

未找到路径“D:\”的一部分。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.IO.DirectoryNotFoundException: 未找到路径“D:\”的一部分。
虚拟主机只有访问d:\wwwroot\sitename_com目录的权限就会报上面的错   回复  引用    

#70楼  2006-10-16 10:58 void [未注册用户]

@Wu.Country@侠缘大哥,能不能提供个最新的demo,发现用源代码生成的DLL用到demo里就出错了。3Q   回复  引用    

#71楼  2006-10-23 15:28 kkk[匿名] [未注册用户]

下载源代码后打开出错,请检查   回复  引用    

#72楼  2006-10-23 22:02 FANS [未注册用户]

回GoWest:

如果我没猜错的话,清理缓存应该就是加上这句话吧。


this.ReleaseRes(application);   回复  引用    

#73楼  2006-10-23 22:03 FANS [未注册用户]

如果不是的话,请Wu.Country@侠缘 也明示一下。。。

  回复  引用    

#74楼  2006-10-26 08:55 reddragon [未注册用户]

下载你的 WebbUploadSample2.zip 和 Webb.WAVE.Controls.Upload2.zip 怎么都无法解压呀? 望回复,有好的联接吗?   回复  引用    

#75楼  2006-10-26 11:24 ssssss [未注册用户]

fdggfgfdsdfdsf
sdfsdfsd
dsfsdfsdfsd   回复  引用    <