如题,原本想做一个上传视频功能,但是却出现了错误:载入页面时到服务器的连接被重置。而很奇怪我上传图片却能成功,视频就不能,会不会是防火墙问题?后台代码:upload.cs

解决方案 »

  1.   

    兄台,你视频文件大多?一般如果文件太大的话(>10MB),上传时就可能经常会出现超时的问题。建议如果你做的是公司的商业项目,就用断点续传控件。这样可以保证多大的文件都可以上传成功。
      

  2.   

    传统的HTML上传方式难已满足超大文件的上传需求,因为使用传统HTML方式向服务器上传超大文件时,浏览器会建立一个连接,然后通过这个SOCKET连接向服务器POST数据。流程是没有问题,但是在国内由于许多地区的网络环境不稳定,同时速度也不快,这就导致浏览器建立的这个边接容易断开,或者是超时。比如你是广州联通网速是10KB/S,你向北京电信服务器上传数据,这速度肯定非常慢,因为跨网了,电信的网相互访问就快,而服务器不可能为你这一个用户等待这么长时间,因为这个连接资源是非常宝贵的。最好的方式是一个用户请求服务器只需要5秒,这样服务器的并发访问量才会比较大,同时能够处理的用户请求就越多。第二个问题,如果用户上传1G的文件,现在已经上传了500MB,但是突然断网了,那么你让用户再重新上传前面的500MB吗?假设用户的网速是100KB/S,那么用户需要花1.4小时来重传前面的500MB。如果是这样的话,估记用户是无法接受的。第三个问题,无论你是用原始HTML方式(即Form表单方式)上传还是使用Flash控件上传服务端都会分配一个与客户端相同大小的内存。比如用户上传的是1G,那么服务端就会分配1G内存,如果用户上传的是5G,那么服务端也会分配5G。那么假设10G个用户同时上传5G文件,那么服务端就需要至少50G内存。一般的服务端这时就会由于内存不足而崩溃掉。
      

  3.   

    传统的HTML上传方式难已满足超大文件的上传需求,因为使用传统HTML方式向服务器上传超大文件时,浏览器会建立一个连接,然后通过这个SOCKET连接向服务器POST数据。流程是没有问题,但是在国内由于许多地区的网络环境不稳定,同时速度也不快,这就导致浏览器建立的这个边接容易断开,或者是超时。比如你是广州联通网速是10KB/S,你向北京电信服务器上传数据,这速度肯定非常慢,因为跨网了,电信的网相互访问就快,而服务器不可能为你这一个用户等待这么长时间,因为这个连接资源是非常宝贵的。最好的方式是一个用户请求服务器只需要5秒,这样服务器的并发访问量才会比较大,同时能够处理的用户请求就越多。第二个问题,如果用户上传1G的文件,现在已经上传了500MB,但是突然断网了,那么你让用户再重新上传前面的500MB吗?假设用户的网速是100KB/S,那么用户需要花1.4小时来重传前面的500MB。如果是这样的话,估记用户是无法接受的。第三个问题,无论你是用原始HTML方式(即Form表单方式)上传还是使用Flash控件上传服务端都会分配一个与客户端相同大小的内存。比如用户上传的是1G,那么服务端就会分配1G内存,如果用户上传的是5G,那么服务端也会分配5G。那么假设10G个用户同时上传5G文件,那么服务端就需要至少50G内存。一般的服务端这时就会由于内存不足而崩溃掉。
      

  4.   

    在实际网络环境中一般30MB左右的文件都需要借助于控件来实现。一方面是因为国内的网络环境不太稳定,另一方面是从服务器的负载方面考虑。
    一般情况下我们的网站用户有的可能用的电信的网络,有的用的是联通的网络,有的是用的教育网,有的在南有的在北,这种复杂的网络环境导致他们访问网站的速度是不同的。有的用户网速快,比如电信的用户访问电信的机房肯定快,他上传大文件可能没有问题。但是联通的访问电信的机房可能就慢了,他上传大文件可能就出现上传超时,掉线等问题。服务器负载的问题,现在普通的文件上传技术对服务端带来的压力还是非常大的。普通的HTML上传1G的文件,服务端需要先分配1G的内存,然后开个长连接一直等待客户上传完毕。在这个期间如果有其它的用户也要上传1G的文件,那么服务端就再分配1G的内存。可以想象如果用户多了,那服务器肯定扛不住挂扯。就算是用Flash也一样,比如swfupload还有其它的几个Flash控件,他们使用的技术还是和普通的HTML一样。腾迅他们正是考虑了这个问题,所以使用控件来解决这个问题。他们通过控件将一个大文件,比如1G划分成许多的小块,每一小块大约是128KB,然后循环上传,直到上传完。这样做的优点就是减轻了服务端的压力,提高了服务端的负载能力,使得服务端能够处理的用户请求数多了。也节省了成本。
      

  5.   

    如果你的视频文件比较大的话(>10MB)建议用控件来上传。貌似网上有个HTTP断点续传控件,你可以搜下。