是否有可能流的FTP上传用PHP? 我有我需要上传到另一台服务器上的文件,而我只能通过FTP访问该服务器。 不幸的是,我不能起来的超时时间在此服务器上。 它是在所有可能做到这一点?
基本上,如果是写一个文件的一部分,然后追加下一部分(重复),而不是一次上传整个事情的方式,这会来救我的。 然而,我的谷歌搜索还没有一个答案给我提供。
这是可以实现的?
是否有可能流的FTP上传用PHP? 我有我需要上传到另一台服务器上的文件,而我只能通过FTP访问该服务器。 不幸的是,我不能起来的超时时间在此服务器上。 它是在所有可能做到这一点?
基本上,如果是写一个文件的一部分,然后追加下一部分(重复),而不是一次上传整个事情的方式,这会来救我的。 然而,我的谷歌搜索还没有一个答案给我提供。
这是可以实现的?
那好吧......这可能是你在找什么。 你熟悉卷曲?
卷曲可以支持附加的FTP:
curl_setopt($ CH,CURLOPT_FTPAPPEND,TRUE); //追加FLAG
另一种选择是使用ftp:// / FTPS://流,因为PHP 5它们允许追加。 请参阅ftp://; FTPS://文档。 可能会更容易访问。
到块追加到远程文件的末尾,最简单的方法是使用file_put_contents
与FILE_APPEND
标志:
file_put_contents('ftp://username:password@hostname/path/to/file', $chunk, FILE_APPEND);
如果它不工作,可能是因为你没有在支持PHP的URL封装 。
如果你需要写一个更大的控制(传输模式,被动模式等),或者你不能使用file_put_contents
,使用ftp_fput
带有把手的php://temp
(或php://memory
)流 :
$conn_id = ftp_connect('hostname');
ftp_login($conn_id, 'username', 'password');
ftp_pasv($conn_id, true);
$h = fopen('php://temp', 'r+');
fwrite($h, $chunk);
rewind($h);
// prevent ftp_fput from seeking local "file" ($h)
ftp_set_option($conn_id, FTP_AUTOSEEK, false);
$remote_path = '/path/to/file';
$size = ftp_size($conn_id, $remote_path);
$r = ftp_fput($conn_id, $remote_path, $h, FTP_BINARY, $size);
fclose($h);
ftp_close($conn_id);
(添加错误处理)