我在连接我正在工作的两个不同进程时遇到问题。我的任务是从数据库中提取数据,根据数据创建文件,然后将其上传到 FTP 服务器。
到目前为止,我已经使用此代码创建并下载了文件,$out
是包含完整文本文件的字符串:
if ($output == 'file')
{
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: ".strlen($out));
header("Content-type: application/txt");
header("Content-Disposition: attachment; filename=".$file_name);
echo($out);
}
这适用于我只想在浏览器中运行脚本并下载文件,但我希望将其发送到 FTP 服务器的情况。
我知道我与 FTP 服务器的连接工作正常,我正确地导航到正确的目录,我已经从磁盘中获取文件并使用 ftp_put()
将它们放在 FTP 上, 但我想服用 $out
并用 $filename
将其直接写入文件作为其在 FTP 服务器上的名称。我可能误读了一些东西,但是当我尝试时 ftp_put
和 ftp_fput
,他们似乎想要文件位置,而不是文件流。我可以考虑其他功能吗?
最佳答案
我在这里回答而不是评论,因为评论会忽略代码格式。
你可以试试:
$fp = fopen('php://temp', 'r+');
fwrite($fp, $out);
rewind($fp);
ftp_fput($ftp_conn, $remote_file_name, $fp, FTP_ASCII);
这将创建一个临时流,而不会将其实际写入磁盘。我不知道还有什么办法
关于php - 在 PHP 中创建文件并将其上传到 FTP 服务器而不在本地保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2676368/