FTP上传老卡住,重新传的话好多文件传上去都是0KB

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-06-25
上传的大文件

基于WEB的文件上传可以使用FTP和HTTP两种协议,用FTP的话虽然传输稳定,但安全性是个严重的问题,而且FTP服务器读用户库获取权限,这样对于用户使用来说还是不太方便。 剩下只有HTTP。在HTTP中有3种方式,PUT、WEBDAV、RFC1867,前2种方法不适合大文件上传,基本上我们使用的web上传都是基于RFC1867标准的HTML中基于表单的文件上传。RFC1867:1.HTML表单现有的HTML规范为INPUT元素的TYPE属性定义了八种可能的值,分别是:CHECKBOX, HIDDEN,MAGE,PASSWORD,RADIO,RESET,SUBMIT,TEXT。 另外,当表单采用POST方式的时候,表单默认的具有“application/x-www-form-urlencoded”的ENCTYPE属性。RFC1867标准对HTML做出了两处修改:(1)为INPUT元素的TYPE属性增加了一个FILE选项。(2)INPUT标记可以具有ACCEPT属性,该属性能够指定可被上传的文件类型或文件格式列表。另外,本标准还定义了一种新的MIME类型:multipart/form-data,以及当处理一个带有ENCTYPE=multipart/form-data 并且/或含有的标记的表单时所应该采取的行为。举例来说,当HTML表单作者想让用户能够上传一个或更多的文件时,他可以这么写:File to process:HTML DTD里所需要做出的改动是为InputType实体增加一个选项。此外,我们也建议用一系列用逗号分隔的文件类型来作为INPUT标记的ACCEPT属性。... (其他元素) ...... (其他元素) ...2.文件传输延迟在某些情况下,在确实准备接受数据前,服务器先对表单数据中的某些元素(比如说用户名,账号等)进行验证是推荐的做法。但是,经过一定的考虑后,我们认为如果服务器想这样做的话,最好是采用一系列的表单,并将前面所验证过的数据元素作为“隐藏”字段传回给客户端,或者是通过安排表单使那些需要验证的元素先显示出来。这样的话,那些需要做复杂的应用的服务器可以自己维持事务处理的状态,而那些简单的应用的则可以实现得简单些。HTTP协议可能需要知道整个事务处理中的内容总长度。即使没有明确要求,HTTP客户端也应该提供上传的所有文件的内容总长度,这样一个繁忙的服务器就能够判断文件的内容是否是过大以至于将不能完整地处理,从而返回一个错误代码并关闭该连接,而不用等到接受了所有的数据才进行判断。一些现有的CGI应用对所有的POST事务都需要知道内容总长度。如果INPUT标记含有一个MAXLENGTH属性,客户端可以将这个属性值看作是服务器端所能够接受的传送文件的最大字节数。在这种情况下,服务器能够在上传开始前,提示客户端在服务器上有多少空间可以用来进行文件上传。但是应该引起注意的是,这仅仅是一个提示,在表单被创建后和文件上传前,服务器的实际需求可能会发生改变。在任何情况下,如果接受的文件过大的话,任何一个HTTP服务器都有可能在文件传输的过程中中断传输。3.传输二进制数据的其他解决办法有些人曾经建议使用一种新的MIME类型aggregate,比如说aggregate/mixed 或是content-transfer-encoding 包来描述那些不确定长度的二进制数据,而不是靠分解为多个部分来表示。虽然我们并不反对这么做,但这需要增加额外的设计和标准化工作来让大家接受并理解aggregate。 从另一方面来说,分解为多部分的机制工作得很好,能够非常简单的在客户发送端和服务器接受端加以实现,而且能像其他一些综合处理二进制数据的方式一样高效率地工作。RFC上传1.一次性得到上传的数据,然后分析处理。看了N多代码之后发现,无组件程序和一些COM组件都是使用Request.BinaryRead方法。一次性得到上传的数据,然后分析处理。这就是为什么上传大文件很慢的原因了,IIS超时不说,就算几百M文件上去了,分析处理也得一阵子。2.一边接收文件,一边写硬盘。了解了一下国外的商业组件,比较流行的有Power-Web,AspUpload,ActiveFile,ABCUpload,aspSmartUpload,SA-FileUp。其中比较优秀的是ASPUPLOAD和SA-FILE,他们号称可以处理2G的文件(SA-FILE EE版甚至没有文件大小的限制),而且效率也是非常棒,难道编程语言的效率差这么多?查了一些资料,觉得他们都是直接操作文件流。这样就不受文件大小的制约。但老外的东西也不是绝对完美,ASPUPLOAD处理大文件后,内存占用情况惊人。1G左右都是稀松平常。至于SA-FILE虽然是好东西但是破解难寻。然后发现2款.NET上传组件,Lion.Web.UpLoadModule和AspnetUpload也是操作文件流。但是上传速度和CPU占用率都不如老外的商业组件。做了个测试,LAN内传1G的文件。ASPUPLOAD上传速度平均是4.4M/s,CPU占用10-15,内存占用700M。SA-FILE也差不多这样。而AspnetUpload最快也只有1.5M/s,平均是700K/s,CPU占用15-39,测试环境: PIII800,256M内存,100M LAN。我想AspnetUpload速度慢是可能因为一边接收文件,一边写硬盘。资源占用低的代价就是降低传输速度。但也不得不佩服老外的程序,CPU占用如此之低.....。上传问题我们在上传大文件时都遇到过这样或那样的问题。设置很大的maxRequestLength值并不能完全解决问题,因为会block直到把整个文件载入内存后,再加以处理。实际上,如果文件很大的话,我们经常会见到Internet Explorer显示 The page cannot be displayed - Cannot find server or DNS Error,好像是怎么也catch不了这个错。为什么?因为这是个client side错误,server side端的Application_Error是处理不到的。解决的方法是利用隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody 和 ReadEntityBody方法从IIS为建立的pipe里分块读取数据。Chris Hynes为我们提供了这样的一个方案(用HttpModule),该方案除了允许你上传大文件外,还能实时显示上传进度。Lion.Web.UpLoadModule和AspnetUpload 两个.NET组件都是利用的这个方案。方案原理:利用HttpHandler实现了类似于ISAPI Extention的功能,处理请求(Request)的信息和发送响应(Response)。方案要点:1. httpHandler or HttpModulea.分块读取和写入数据b.实时跟踪上传进度更新meta信息2. 利用隐含的HttpWorkerRequest用它的GetPreloadedEntityBody 和 ReadEntityBody方法处理文件流3. 自定义Multipart MIME 解析器。自动截获MIME分割符。将文件分块写如临时文件。实时更新Appliaction 状态(ReceivingData, Error, Complete) 。

如果是本地文件上传网站上传不上去的主要原因有以下几点:
第一:格式不对。一般网站都支持jpg、png格式
第二:文件太大而导致无法上传。一些网站对于文件上传的大小是有限制的可以仔细查看提示。将文件缩放到指定大小再进行上传。
第三:网站服务器报错,无法上传。遇到这种情况,建议暂时放弃上传联系网站站长进行解决。

如果是网站服务器或者FTP无法上传,则用下列方法:
 1、要上传文件的文件夹属性是不是 777 的属性。使用 FTP 软件,查看目录,在该目录上点击右键,选择属性,基本就可以查看到当前文件夹的属性了,不是 777 的属性,请修改为 777 后确认。
  
  2、如果文件夹的属性正确,请确定是不是您的空间已满。譬如您购买了 2G 的虚拟空间,是不是空间已经满了,这个一般会在虚拟主机提供的控制面板内查到。
  3、如果空间仍有剩余,请向虚拟主机提供商询问您的 FTP 帐号是不是有对此目录的读写属性。
  4、如果帐号的权限也正确,请向虚拟主机提供商询问是否是磁盘空间的统计有问题,请虚拟主机提供商帮您重新检查一下磁盘空间的统计。这种情况一般在您使用 FTP 软件上传失败时会提示:
  Disk quota exceeded
  CODE: [COPY]
  Disk quota exceeded
  这表示磁盘配额超过限制,可以让空间商执行下面命令来重建一下统计即可。
  quotaoff /www 关闭
  quotacheck -mcv /www 重建
  quotaon /www 打开
  CODE: [COPY]
  quotaoff /www 关闭  quotacheck -mcv /www 重建

是不是网络不稳定 老是断线? 或者是空间那边的问题

  • FTP上传老卡住,重新传的话好多文件传上去都是0KB
    答:是不是网络不稳定 老是断线? 或者是空间那边的问题
  • 易语言ftp上传为什么会卡住
    答:建议用延时,所说的延时,只是让它缓慢的上传,因为FTP上传是需要很大的压力的。所以延时可以来解决,当然延时不是延迟,延迟是卡住,延时只是一个慢慢的走过去而已
  • FTP文件到100%卡住,谁知道是咋回事
    答:1,更换ftp软件的连接模式,一般有被动模式和主动模式,更换一下试试。2,更换一下软件,建议用FlashFXP 这个软件试一下。3,更换本地网络ip,或者重启路由器再试。以上三种方法都解决不了你的问题,你可以去找你的供应商,看看是不是服务器的问题。
  • python ftp上传文件卡住也没有报错怎么回事
    答:时间过长也就会卡住,但是没有什么报错;这个情况下只能sleep(10)是暂停多少秒,再次上传
  • 为什么我用FLASH FXP这个FTP工具上传会这么慢?
    答:有可能是你的空间慢,也可能是你的网络不好。我有时候也这样,上次上传700M的源码,传了20个小时,老是卡住,要过会然后才会自动续传。
  • ftp 卡住
    答:我以前在公司的时候配置过ftp,有时候也是这个情况,是权限设置的问题,把ftp文件夹的权限重新设置一下成任何人都拥有控制权就可以解决了。
  • 用ftp上传文件时遇到某个文件卡住了怎么办?
    答:重新上传。或者先单独上传那个文件,看看是不是那个文件有问题
  • FTP文件卡死怎么解决?
    答:如果要下载文件,把ET放在服务器上运行是最好的,直接在方案里指定保存目录,不用再FTP上传了。FTP上传是有可能失败,我用专门的FTP软件比如CUTEFTP\FLASHFXP什么的传东西都经常宕
  • linux vsftpd 会卡住
    答:估计这个和防火墙还有Selinux没有多大关系,因为可以上传啊,如果真是防火墙的问题或者Selinux的问题,文件根本上传不过去,连接都是问题。楼主可以查看下vsftp的日志,找找原因
  • 电脑ftp手机es管理器,手机文件可以移动复制到电脑,电脑复制文件到手机...
    答:电脑给手机传文件 要不通过数据线,通过对应的文件传输接口传输,就像电脑里面不同文件夹传输。要不通过无线传输,文件传输助手。给虚拟手机传文件 虚拟手机在电脑有一个共享目录,只能通过这个共享目录,把文件传给手机。如果需要传到虚拟手机其他目录下,进入手机共享目录,然后再进行复制或移动操作即可。