PHP:如何将 .txt 文件从 FTP 服务器读取到变量中?

新手上路,请多包涵

我有两台服务器。我正在连接的文件中已经有一个 .txt 文件。

我需要获取 .txt 文件内容并将它们放入 $ 变量中。这是我的代码不起作用:

 $ftp_server = $_POST["site"];
$path = $_POST["path"];
$ftp_user_name = $_POST["username"];
$ftp_user_pass = $_POST["pass"];

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

$remote_filename =
    "/" . $_POST["path"] . "/" . "#" . $result["id"]
    . " - " .    $result["LastName"] . ", " . $result["FirstName"]
    . "/" . $_POST["title"] . ".txt";
ftp_get($conn_id, $content, $remote_filename, FTP_ASCII);

此代码连接到 FTP,我使用 ftp_get 从一个文本文件复制到一个名为 $content 的变量。我知道一个变量不属于这个参数,但我现在被卖掉了。我不知道如何阅读这个 .txt 文件。

有没有办法用 PHP FTP 函数来做到这一点?

现在,当我尝试这个时:

 $fileContents = file_get_contents('ftp://username:pa‌​ssword@hostname/path/to/file');

它给出了一个错误:

警告:fopen(ftp://…@goldenbooklet.com/101Notebook Backup: 22-08-2013/#11 - Cappucci, Ryan/queen.txt) [function.fopen]: 无法打开流:FTP 服务器报告550 /101Notebook 备份:22-08-2013/:第 269 行的 /home/content/34/11614434/html/adminpdo.php 中不是常规文件

为什么会出现此错误?

再次感谢

原文由 Ryan Jeffrey Cappucci 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 534
1 个回答

file_get_contents 是最简单的解决方案:

 $contents = file_get_contents('ftp://username:pa‌​ssword@hostname/path/to/file');

如果它不起作用,可能是因为您没有 在 PHP 中启用 URL 包装器


如果您需要更好地控制读数(传输模式、被动模式、偏移量、读数限制等),请使用 ftp_fgetphp://temp (或 php://memory ) 流

 $conn_id = ftp_connect('hostname');

ftp_login($conn_id, 'username', 'password');

ftp_pasv($conn_id, true);

$h = fopen('php://temp', 'r+');

ftp_fget($conn_id, $h, '/path/to/file', FTP_BINARY, 0);

$fstats = fstat($h);
fseek($h, 0);
$contents = fread($h, $fstats['size']);

fclose($h);
ftp_close($conn_id);

(添加错误处理)

原文由 Martin Prikryl 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏