估计是传输模式不对。要用binary方式

解决方案 »

  1.   

    既然是ftp了,为什么不直接打开一个窗口(并调用ftp协议)让它自己下载呢?
      

  2.   

    我之所以没用FTP直接让人下载是因为我不想把用户名与密码明文显示~~~~
    在线等待~~~~~ 分不是问题~~~~~~~~
      

  3.   

    我之所以没用FTP直接让人下载是因为我不想把用户名与密码明文显示~~~~如果想把用户名与密码不显示出来可以采用其它的方法,传输一般用FTP的方法最好.
      

  4.   

    用ftp_nb_get()函数进行异步传输
    用ftp_get()函数进行同步传输
    用ftp_nb_put()函数进行异步上传
    用ftp_put()函数进行同步上传
      

  5.   

    你使用php下载的时候,你的脚本运行有没有超时啊?
      

  6.   

    在php写的脚本里面下载几百兆的文件,你估计需要多长时间?
    超过了脚本正常运行时间了吗?
    个人以为一次下载完是不可能的,所以在快超时的时候,重新跳转的本页继续委婉的下载,直到下载完成,但是估计运行不稳定......
    抛砖引玉
      

  7.   

    用法根本不对。。用ftp_nb_get()函数进行异步传输
    用ftp_get()函数进行同步传输
    用ftp_nb_put()函数进行异步上传
    用ftp_put()函数进行同步上传
      

  8.   

    没有超时~~  我在php.ini里设了 max_execution_time = 30而且下载不到两秒钟就提示下载完毕了```````如果我用ftp_get()或者ftp_nb_get()这些函数都是要用一个<input ..>设置下载位置(local_file)的啊~   现在我想用IE直接下载怎么办呢?~~~~
      

  9.   

    不好意思 错了:我在php.ini里设了 max_execution_time = -1
      

  10.   

    <?php
    set_time_limit(0);$stream = ftp_connect("210.29.64.17", "21") ;
    ftp_login($stream, "haiyun", "haiyun") ;
    ftp_chdir($stream, "应用软件") ;
    $nowDir = ftp_pwd($stream) ;
    $file_name = "realone avi.exe";
    $file = $file_name;
    unlink($file);$filesize = ftp_size($stream, $file_name) ;
    if($filesize < 0)  {
    echo "文件找不到";
    }else  {
      ftp_get($stream, $file, $file_name, FTP_BINARY);
      Header("Content-type: application/octet-stream");
      Header("Accept-Ranges: bytes");
      Header("Accept-Length: ".$filesize);
      Header("Content-Disposition: attachment; filename=" . $file_name);
      
      readfile($file) ;}?>
      

  11.   

    哈哈 感谢 xuzuning(唠叨) 用你的方法是以乱码在浏览器中显示的 如何才能以二进制方式下载呢?
      

  12.   

    我运行那个程序时会在服务器端磁盘上写入realone avi.exe文件~~
    这可能是由于ftp_get函数吧~~~这种写法违背了我的愿望~~~ :(我可以利用fopen("ftp://haiyun:[email protected]/", "rb")函数提供下载吗??
    提供大家一个可连接的FTP进行测试!
      

  13.   

    FTP上有一个test.exe的文件~~~如何才能用header的方式把它完全下载下来呢?
      

  14.   

    ftp地址:  www.zhiin.net  
    默认端口: 21
    用户名:   haiyun
    密码:     haiyunFTP上有一个test.exe的文件如何才能用把这个文件全部下载下来呢?
    要求: 隐藏下载地址 (最好用header的方式)急~~ 分不够再加! 在线等待~~~~
      

  15.   

    其实直接readfile("ftp://haiyun:[email protected]/test.exe");就可以了
    如果要知道文件大小可以
    $s = file_get_contents("ftp://haiyun:[email protected]/test.exe");
    echo strlen($s);
    echo $s;
      

  16.   

    用readfile("ftp://haiyun:[email protected]/test.exe")下载不全 :(
    下载下来才8K 而且默认扩展名变为.php  :(用$s = file_get_contents("ftp://haiyun:[email protected]/test.exe");并不提供下载而是在浏览器中显示乱码~~~~~呜呜  我好可怜!!!!!
      

  17.   

    你把你连接ftp发出的命令得到的反馈贴出来看看
      

  18.   

    http://www.zhiin.net/readfile.php 的源码如下:
    <?php
    readfile("ftp://haiyun:[email protected]/test.exe");
    ?>
    =====================================================================
    http://www.zhiin.net/getcontents.php的源码如下:
    <?php
    $s = file_get_contents("ftp://haiyun:[email protected]/test.exe");
    //echo strlen($s);
    echo $s;
    ?>大家测试一下 看看下载不全是什么原因!
      

  19.   

    我在readfile.php与getcontents.php中已经加了set_tim_litmit(0),但还是不行~~浏览器里显示出32K的乱码:(
    前面一段乱码如下:MZ@????L?This program cannot be run in DOS mode. $兝3一嵍‖魼f塡?魼稨Af塇‖魼f塡?魼兟稨A侜f塇~艁?0?悕?‖魼f塡?魼B稨Af塇仿=~?仿=(?‖魼f塡?魼B稨Af塇仿=~?仿=4?嵍嵖‖魼f塡?魼B稨Af塇仿=~荨@??$f塗$?33劢〈魼f?$f塴?f塴$璺2?歹@f?欳凔|馗€3蓩|魼f墝B?|魼f墝B兝u吒€3蓯嵈&?x魼f墝B?x魼f墝B兝u吒谬3蓯嵈&?堳@f墝Bz?堳@f墝B|?堳@f墝B~兝u押谬2缻v嵓'?岝@垊 =?岝@垊 >?岝@垊 ?兟u?缷@魼f?魼f?魼?魼f?魼f?魼fr鬇T鬇⑿鬇‖魼??圄@?d鬇?f?祠@f?铘@?磅@f?魼fp鬇〈魼?魼??魼「魼f?魼??魼?f?.魼?挑@f?魼?梏@疳@伳?魼,釦?(魼h釦[]^_脥?嵓'3狼剪@
      

  20.   

    TO cxinfo(小Q) :用 http://www.zhiin.net/readfile.php 这样提供下载 在客户端可以看到密码吗?用下载工具好像也看不到吧~~~~
      

  21.   

    IE直接下载是readfile.htm文件用Flashget下载是readfile.php文件,无法看到密码,但也无法断点续传大小均为32K文件前4行的内容是:
    MZ?        ?      @                                   ?  ? ???L?This program cannot be run in DOS mode.$       <p?x積x積x積
    籩y積不知识否是不TEST.EXE文件?就算最后能够正确的下载文件,几M的小文件可以这么下,几百兆的文件怎么保证稳定下载?而且会成倍增加Web服务器的负担!如果是为了防盗链,还是改变思路吧!
      

  22.   

    TO cxinfo(小Q) :    用readfile()下载会增加web服务器负担吗?
    为了防盗链能提供我一个合适的方法吗? 谢了`````就以下载 ftp://haiyun:[email protected]/test.exe 为例``````
      

  23.   

    TO: zhiin(〃稚鹰〃)   个人认为用readfile()至少会增加一倍的服务器负担  http://www.joy369.com/ 防盗链作的很好,不过是ASP的程序,而且好像没有源码,跟金梅的那个程序很像!  我分析了一下他们的基本思路:  首先是用户认证,只有他们的用户,才能得到正确的FTP下载地址而口令则是随机生成,文件下载完毕后,口令即告失效,也就是说,绝对无法盗链的!
      

  24.   

    TO: cxinfo(小Q)可是 http://www.joy369.com 的源码看不到啊`````即使看到了也是ASP的有PHP程序可以参考一下吗?
      

  25.   

    如果按照你所说的思路那么FTP口令就是登陆一次改变一次喽?``````
      

  26.   

    既然ASP可以,PHP也一定可以估计 http://www.joy369.com 是用ASP控制FTP Server ,当用户下载时,就建立一个该用户帐号,然后FTP连接断开时,就删除该帐号不知道你用什么软件架设Ftp Server
    Serv-U FTP是支持MySQL数据库Add-ons的
      

  27.   

    感谢小Q  如果没有更好的方法我只有用你说的这种方法了``````` 呵呵``````
    请再帮忙看看有没有其它的办法!
    我最郁闷的是用fopen readfile getcontents这些方法为什么下载不全:(```````下载下来不是8K 就是32K :(我在程序前面也加了 set_time_limit(0); 了啊``````唉 郁闷了好多天了 :(``````````` 
      

  28.   

    http://www.joy369.com 用的应该是ASP 的 Serv-U 插件http://www.xia8.com/SoftView/SoftView_4109.html

    http://www.mycodes.net/soft/3511.htm不过都没有源码,而且是收费的相信PHP也能做到,希望有高手能做一个PHP的插件
      

  29.   

    用MySQL与Serv-u连接是不需要插件的````这个我做过````我现在很想知道为何下载不全 :(````````寻求完整代码!
      

  30.   

    文件流……
    -------WWW.8BIZ8.COM------
    域名注册|虚拟主机|集团邮局
    虚拟主机免费试用,满意再付款
    套餐1:个人型100M+国内域名+50M邮局=200元
    套餐2:企业型300M+国内域名+100M邮局=350元
    国际域名 59元/年
    国内域名 120元/年