PHP Conference Japan 2024

FTP 上下文选项

FTP 上下文选项FTP 上下文选项列表

描述

用于 ftp://ftps:// 传输的上下文选项。

选项

overwrite 布尔型

允许覆盖远程服务器上已存在的文件。仅适用于写入模式(上传)。

默认为 false

resume_pos 整数

开始传输的文件偏移量。仅适用于读取模式(下载)。

默认为 0(文件开头)。

proxy 字符串

通过 http 代理服务器代理 FTP 请求。仅适用于文件读取操作。例如:tcp://squid.example.com:8000

注意

注意底层套接字流上下文选项
底层传输可能支持其他上下文选项。对于 ftp:// 流,请参阅 tcp:// 传输的上下文选项。对于 ftps:// 流,请参阅 ssl:// 传输的上下文选项。

添加注释

用户贡献的注释 3 条注释

php dot net at misterchucker dot com
15 年前
这是一个关于如何允许 fopen() 覆盖 FTP 站点上的文件的示例。如果未修改流上下文,则会发生错误:“...无法打开流:远程文件已存在且未指定覆盖上下文选项...”。

<?php
// FTP 文件的路径,包括登录参数
$ftp_path = 'ftp://username:[email protected]/example.txt';

// 允许覆盖远程 FTP 服务器上已存在的文件
$stream_options = array('ftp' => array('overwrite' => true));

// 使用定义的选项创建流上下文资源
$stream_context = stream_context_create($stream_options);

// 以写入模式打开文件并将其截断为零长度
if ($fh = fopen($ftp_path, 'w', 0, $stream_context))
{
// 将内容写入文件
fputs($fh, 'example contents');

// 关闭文件句柄
fclose($fh);
}
else
{
die(
'无法打开文件。');
}
?>
dev at codesatori dot com
8 年前
显然,如果覆盖选项不存在,则仅注册为 false。如果我将其指定为 false,则其行为与 true 相同并覆盖。然后,
<?php
if (empty($opts['overwrite'])) {
unset(
$opts['overwrite']);
}
?>
...是我使用默认选项的 FTP 流包装器类的简单修复。不过,这非常出乎意料;即使我说 false,它也意味着 false?显然,PHP (7.0.2) 只检查选项是否存在,而不是其布尔值。
instatiendaweb at gmail dot com
3 年前
// ftp 路径必须与 localhost 的路径匹配
$ftp_path = 'ftp://francisco:aaa@localhost:21/ftparchivo.txt';
// 我们编写流选项
$stream_options = array('ftp' => array('overwrite' => TRUE));
// 我们创建一个上下文
$stream_context = stream_context_create($stream_options);
\escribir::verifacionnota($stream_context, 'STREAMCONTEXT');
// 我们打开要读取的文件
$flujo = fopen($ftp_path, 'r', false, $stream_context);
// 创建的函数:vardump + 字符串
\escribir::verifacionnota($flujo, 'VARDUMP FOPEN');

$contenido = '';
// 翻译,只要文件内容不位于文件的末尾 ==> feof
while (!feof($flujo)) {
// 然后读取 8192 字节的文件并将其添加到变量内容中
$contenido .= fread($flujo, 8192);
}
\escribir::verifacionnota($contenido, 'VARDUMP CONTENIDO');
// 我们关闭流
fclose($flujo);
To Top