CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

ASP.net 上传巨大文件续

楼主riding(ride)2006-03-20 13:14:41 在 .NET技术 / ASP.NET 提问

再给100分 问题点数:100、回复次数:40Top

1 楼riding(ride)回复于 2006-03-20 13:15:24 得分 0

希望在这里跟贴!Top

2 楼sekone()回复于 2006-03-20 13:26:17 得分 1

不太清楚啊Top

3 楼zhtflhs(哼哼)回复于 2006-03-20 13:28:25 得分 1

不太容易!  
  帮顶!Top

4 楼fphuang(人在哈尔滨·四月)回复于 2006-03-20 13:36:53 得分 1

我感觉超过200M的就困难了,200M之内的都还可以Top

5 楼theodiact(theodiact)回复于 2006-03-20 13:39:28 得分 2

最简单的方法就是在WEB.CONFIG中将上传的文件大小改大,要不就是自己去重写HttpResponse的类,总之很麻烦的,用HTTP协议终究会有问题。FTP还可以考虑。网上这种文章特别多,可以自己去看看Top

6 楼bookshop(我是比儿(http://www.crossgo.com))回复于 2006-03-20 13:40:37 得分 0

文件太大的时候建议用控件来实现,不大的可以在web.config设置  
   
  Top

7 楼dnboy(computerboy)回复于 2006-03-20 13:47:03 得分 2

我用ASP.NET   UPLOAD的Bestcomy.Web.Controls.Upload.dll组件,在XP下面能够上传,但是传到2003上面就不行了,文件是传到临时文件夹了,但在把文件转移到指定的地方的时候出错了.说什么没有设置对象的,然后他就把临时文件夹的给删除了,郁闷啊.不知道是不是File.MoveTo在2003上面不行还是怎么的?Top

8 楼kingwkb(烂皮鞋)回复于 2006-03-20 13:52:04 得分 2

重写httpWorkerRequest吧Top

9 楼TSD(智之选,商欲达--智商购物系统zhishop.com)回复于 2006-03-20 14:00:14 得分 0

文件这么为什么不用FTP上传呢?Top

10 楼TSD(智之选,商欲达--智商购物系统zhishop.com)回复于 2006-03-20 14:00:27 得分 0

文件这么大为什么不用FTP上传呢?  
  Top

11 楼flyinging(一路走来)回复于 2006-03-20 14:02:16 得分 1

思归里面有,把超时时间设的长一点就OKTop

12 楼Gerryjiang(下一站)回复于 2006-03-20 14:03:28 得分 0

太大文件最好用FTP,这样速度也会快且灵活Top

13 楼riding(ride)回复于 2006-03-20 15:24:00 得分 0

问题是:  
  看了思归的文章,    
  利用隐含的HttpWorkerRequest用它的GetPreloadedEntityBody   和   ReadEntityBody方法处理文件流  
  IServiceProvider   provider   =   (IServiceProvider)   HttpContext.Current;    
  HttpWorkerRequest   wr   =   (HttpWorkerRequest)   provider.GetService(typeof(HttpWorkerRequest));  
  byte[]   bs   =   wr.GetPreloadedEntityBody();  
  ....  
  if   (!wr.IsEntireEntityBodyIsPreloaded())  
  {  
  int   n   =   1024;  
  byte[]   bs2   =   new   byte;  
  while   (wr.ReadEntityBody(bs2,n)   >0)  
  {  
  .....  
  }  
  }  
  上面的代码一直不能完成。  
  1.   wr.GetPreloadedEntityBody();有时返回是null,有时是7K的byte数组,怎么回事?  
  2.   wr.ReadEntityBody(bs2,n)   为什么老返回0?  
  aspx的页面也相应的设置了   :  
  <form   id="form1"   runat="server"   enctype="multipart/form-data"   method="post"   >  
  <input   type="file"   id="myFile"     runat="server"   style="width:   262px"   />  
  为啥就不行呢?  
  给200分  
  Top

14 楼riding(ride)回复于 2006-03-20 15:27:13 得分 0

FTP肯定不行。一定用http的无组件上传!方案是定好的。只讨论怎么用技术实现。原来还说4G,结果一查IIS最大只支持2G.200M就太小了。1G的肯定多一些。Top

15 楼riding(ride)回复于 2006-03-20 15:29:16 得分 0

to   kingwkb(烂皮鞋)   :这可是最坏的打算。Top

16 楼windinwing(潇笑)回复于 2006-03-20 17:02:07 得分 1

我正在试,完了传上来看看Top

17 楼nswhy(南山翁)回复于 2006-03-20 17:38:05 得分 1

关注Top

18 楼nameone(过客)回复于 2006-03-20 19:08:30 得分 1

UPTop

19 楼kent3721(Kent)回复于 2006-03-20 19:17:20 得分 1

在web.config里修改限制。Top

20 楼luby(轻疯[在岁月无声的消逝里,轻轻的...我疯了。])回复于 2006-03-20 21:47:28 得分 1

这个问题要关注一下。Top

21 楼net_lover(【孟子E章】)回复于 2006-03-20 22:41:14 得分 0

上传大文件将大大降低服务器性能Top

22 楼wuyg(平平)回复于 2006-03-21 09:01:22 得分 0

如果允许用控件就简单了,实现断点续传的上载既可。  
   
  我觉得应该用户能够接受控件,毕竟上传这么大的文件,没有几个人有这个权限。控件就几个人安装,不会很麻烦。Top

23 楼hzgood(try again)回复于 2006-03-21 09:34:16 得分 1

哥们用ASP的无组件吧,   你还不需要因为.net1.1   到2.0   的变动而改变上传组件.Top

24 楼ghchen()回复于 2006-03-21 09:39:41 得分 0

我以前研究过一段时间不过没有搞懂,知道的大哥请出手吧Top

25 楼fangyifeng(想吃老虎的猪)回复于 2006-03-21 10:48:18 得分 0

我做过几个控件也是经不住大容量的文件上传,最多100多M,后来我在网上下了一个控件,具体不记得了,一个老外写的!Top

26 楼fangyifeng(想吃老虎的猪)回复于 2006-03-21 10:49:43 得分 2

这是个通用的问题,如果谁可以做出来后再公布源吗就好了呵呵,  
  那个老外写的我在以前的公司里面没拷出来!Top

27 楼zorou_fatal(The world and system is even)回复于 2006-03-21 10:51:20 得分 0

slickupload   上传的时候占用固定内存量Top

28 楼w6f3y0(王易)回复于 2006-03-21 11:43:55 得分 1

上传大文件这个问题要综合考虑问题(包括硬件,和软件,web服务器的性能,还有应),  
  1。从服务器的角度,我们通俗的说,web服务是一个应用进程,那么应用进程就要占用系统资源,其中包括内存,如果我们要让每个asp.net的进程都上传200M的话,那么它占用的内存也至少有200M,这样的进程在服务器上跑上5个的话就是1G(也就是说有5个用户同时都要上传文件的话,那么服务器就有1G的内存地址为.net准备),那么现在的主流pc_server也就是1G到2G,如果应用消耗系统资源>服务器资源,那么web服务器将会当机,所以,我个人认为,不是asp.net的设计者没有能力写出“上传大文件”的控件,而是他们不敢把这样的功能提供给程序员。  
  2。从网络的角度,我们知道,现在的都是基与tcp/ip   3   次握手的,如我们的网络不错的,比如一个网段内的计算机,我们就算ftp一个文件的话也得将近3~4分钟,何况我们要用应用   去传这样大得文件,就是说,如果你现在在一个网页中点击了一个上传的button,等了6   ~7分钟,都没有反映(要传200M的话,网络传输的时间很有可能是这么长的时间),用户是一个什么样的心态,  
  可能满头都是?????  
  3。从软件的角度,传这么大的文件是可以实现的,但必须要想别的办法,我前头作的时候,就是利用指针和数组。我首先用filestream.将客户端的文件进行分段,比如说4M,因为asp.net默认是最大传4M的附件,在将filestream分段传到服务器内存的数组里,在进行数组组装。然后在服务器上创件文件。   ok。完成,但也只能传80M左右的文件,在大的话,应用的耗时太长。用户可能不满意。代码是公司的。所以不好给大家看,只能和大家探讨一下原理。Top

29 楼wljsp(晓月轻风)回复于 2006-03-21 11:57:26 得分 0

非常关注.Top

30 楼LifeForCode(用生命编程.再入轮回(2007))回复于 2006-03-21 12:53:59 得分 0

严重关注Top

31 楼dh20156(风之石)回复于 2006-03-21 13:12:33 得分 0

关注学习。Top

32 楼nekiy(云淡风清)回复于 2006-03-21 13:18:41 得分 0

学习  
          我也想知道Top

33 楼lizi02(冬虫夏草)回复于 2006-03-21 21:37:43 得分 0

可以写个控件实现么?  
  决定延时太长的时候,如果没有进度条的话,没有多少人愿意等的Top

34 楼kiccleaf(凯晰叶子(http://www.openzj.com))回复于 2006-03-21 21:40:48 得分 0

这么大的文件,就用FTP上传多好!免得服务器当机掉了!这么大上传!Top

35 楼wuyg(平平)回复于 2006-03-21 21:49:39 得分 0

to   w6f3y0(王易)   :  
   
    如果是自己写控件,你没有考虑断点续传,传统的断点续传只支持下载,但只要允许写客户端控件,可以很容易实现断点续传的上载,这样无论多大的文件我都不怕,只怕操作系统的文件大小限制。Top

36 楼ruodeer(看我的个性签名都给我分)回复于 2006-03-21 22:31:55 得分 0

guanzhuTop

37 楼csxbbb(xiaoxiao)回复于 2006-03-21 23:14:28 得分 0

这里有个应用的例子(要登录。。。)  
  http://www.netyi.net/Member/uploadBook.aspxTop

38 楼freshman1995(出品)回复于 2006-03-23 10:10:18 得分 0

好像知道  
  大家说说需要学习什么基础知识呢Top

39 楼riding(ride)回复于 2006-03-23 15:12:07 得分 0

郁闷,结帖了。原来这段程序在httpModule内起作用。至于.   wr.GetPreloadedEntityBody();有时返回是null,有时是7K的byte数组还是没搞明白。Top

40 楼zhurenweile(助人为乐)回复于 2006-04-05 12:04:19 得分 81

系统原因Top

相关问题

  • asp文件中放.net目录
  • 怎样把ASP。NET中的CS文件编译成DLL文件?
  • ASP.net 上传巨大文件
  • 关于在ASP。NET中的JS文件的应用
  • asp。net上传文件的权限问题
  • 关于ASP。Net文件下载的问题
  • ===急!Asp。Net里面读取DBF文件和Excel文件的连接串到底怎么写?======
  • 谁知道为什么装了.net后.asp的文件不能浏览?
  • 请问在ASP。NET中如何操作WEB服务器中的文件
  • 如何用.exe文件接收asp(非.net)网页传过来的值?

关键词

  • .net
  • asp.net
  • 文件
  • 控件
  • 服务器
  • 断点
  • 组件
  • 内存
  • 应用
  • 用户

得分解答快速导航

  • 帖主:riding
  • sekone
  • zhtflhs
  • fphuang
  • theodiact
  • dnboy
  • kingwkb
  • flyinging
  • windinwing
  • nswhy
  • nameone
  • kent3721
  • luby
  • hzgood
  • fangyifeng
  • w6f3y0
  • zhurenweile

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo