FTP 上下文选项

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

描述

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

选项

overwrite bool

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

默认为 false

resume_pos int

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

默认为 0(文件开头)。

proxy string

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

注释

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

添加注释

用户贡献的注释 3 个注释

16
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(
'Could not open file.');
}
?>
0
dev at codesatori dot com
7 年前
显然,如果覆盖选项不存在,它只会被注册为 false。如果我将其指定为 false,它与 true 行为相同并覆盖。然后,
<?php
if (empty($opts['overwrite'])) {
unset(
$opts['overwrite']);
}
?>
...是我的 FTP 流包装器类使用默认选项的简单修复。但这非常出乎意料;即使我说 false,false 也意味着 false 吗?显然,PHP (7.0.2) 只是检查选项是否存在,而不是其布尔值。
-3
instatiendaweb at gmail dot com
3 年前
// FTP 路径必须与本地主机的路径匹配
$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 + string
\escribir::verifacionnota($flujo, 'VARDUMP FOPEN');

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