目的:从远程链接处下载文件
问题:远程链接提供一个csv格式文件的下载,如:http://adscendmedia.com/campaigncsv.php,访问链接后浏览器提示下载,请问如何通过php代码直接下载此文件到服务器上?(这是后台运行的一个代码片段,所以无法来选择“另存为”方式下载的),各种常规下载方式都试过不行,有什么办法吗?

解决方案 »

  1.   

    怎么叫无所谓,就是要通过http://adscendmedia.com/campaigncsv.php获取到文件内容。
      

  2.   

    fname= "fds.zip ";  //改为下载文件的名字
    header( 'Content-Disposition:   attachment;   filename= " '.$fname. ' " '); 
    header( 'Accept-Ranges:   bytes '); 
    header( 'Content-Type:   application/x-unknown '); 
    header( 'content-Transfer-Encoding:   binary '); 
    header( 'Content-Length:   4 '); 
    echo   "xxx "; 参考 
    http://bbs.chinaunix.net/viewthread.php?tid=668683&extra=page%3D1
      

  3.   

    <?php
    $content=file_get_contents('http://adscendmedia.com/campaigncsv.php');
    file_put_contents('file.csv',$content);你确定尝试过各种方式??
      

  4.   

    是的,如果你运行过以上代码就知道,file_get_contents,fopen都不行的,因为http://adscendmedia.com/campaigncsv.php是直接提示下载的,并不是输出内容的.
      

  5.   

    有两个可能的原因:一是有些网站不支持file_get_contents,fopen等函数的抓取。二是http://adscendmedia.com/campaigncsv.php转向了一个新的网址,这个网址才是要下载的文件。
    对于第一个原因,可以尝试CURL函数,curl系列函数能够更好的模拟浏览器。
    对于第二个原因,得到新的网址有两个方法。一个方法是在浏览器的下载功能里面,在文件下载过程中可以看到。而是用php的socket系列函数可以输出返回的header信息。
      

  6.   

    补充:也可以试试用socket系列函数抓取。
      

  7.   

    我看了一下,网址转向了https://adscendmedia.com/campaigncsv.php
    注意是https !