【问题标题】:PHP. Download from FTP with stream or custom ftp wrapperphp。使用流或自定义 ftp 包装器从 FTP 下载
【发布时间】:2013-01-16 09:29:21
【问题描述】:

我需要在 PHP 中创建自定义 FTP 包装器的帮助。

我用过

$h=fopen('ftp://....');

但这不适用于所有 FTP 服务器(有时主动/被动模式存在问题),我无法使用包装器来控制它。

我使用来自http://php.net/manual/en/book.ftp.php 的函数并且一切正常。我只在使用 PHP FTP 包装器下载时遇到问题。

我需要使用包装器,因为我不想将下载的文件存储到磁盘。我从流中读取文件的一部分,然后输出到用户浏览器。

所以我想在 PHP 中创建自定义 FTP 包装器。最重要的是,如果它基于 http://php.net/manual/en/book.ftp.php 的函数。

我在http://php.net/manual/en/function.ftp-fget.php那里看到了例子

function ftp_get_contents ($conn_id, $filename, 
//Create temp handler: 
     $tempHandle = fopen('php://temp', 'r+'); 

//Get file from FTP assuming that it exists: 
     ftp_fget($conn_id, $tempHandle, $filename, FTP_ASCII, 0)); 

     //Getting detailed stats to check filesize: 
     $fstats = fstat($tempHandle); 

     return fread($tempHandle, $fstats['size']); 
 }

但这并不好,因为它会将完整文件保存到磁盘,并且只有在此之后我才能从本地文件中读取。

你知道这样的事情,但允许我从 FTP 服务器读取文件的一部分而不在本地缓存完整文件吗?

谢谢。

【问题讨论】:

  • 不要为此使用 php。 PHP 已经吃掉了足够的内存。使用一些通过 php 调用的命令行脚本。
  • 您的意思是使用php.net/manual/en/function.popen.php 并创建一些命令行工具来从FTP 读取文件并打印到输出?
  • 是的。为工作使用正确的工具!钉子的锤子。螺丝刀。 php 用于漂亮的主页。 :)

标签: php


【解决方案1】:

我找到了解决办法。

我愿意

$h=popen('wget -q -O - ftp://.....','r');

它工作正常。但是必须安装wget。

【讨论】:

    猜你喜欢
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多