我有一个问题,连接两个不同的进程,我正在工作。我的任务是从数据库中提取数据,从数据中创建一个文件,然后将其上传到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
作为文件直接写入FTP服务器上,文件名为$filename
。我可能误读了东西,但当我尝试ftp_put
和ftp_fput
时,似乎他们想要的是文件位置,而不是文件流。我可以考虑一个不同的功能吗?
实际上,ftp_put需要本地文件的路径(作为字符串),因此尝试将数据写入临时文件中,然后将其ftp_put发送到服务器
file_put_contents('/tmp/filecontent'.session_id(), $out);
ftp_put($ftp_conn, $remote_file_name, '/tmp/filecontent'.session_id());
unlink('/tmp/filecontent'.session_id());
在这种情况下,您不需要发送示例中发送的头。
下面是Matei从上面作为完整函数ftp_file_put_contents()的解决方案:
function ftp_file_put_contents($remote_file, $file_string) {
// FTP login details
$ftp_server='my-ftp-server.de';
$ftp_user_name='my-username';
$ftp_user_pass='my-password';
// Create temporary file
$local_file=fopen('php://temp', 'r+');
fwrite($local_file, $file_string);
rewind($local_file);
// FTP connection
$ftp_conn=ftp_connect($ftp_server);
// FTP login
@$login_result=ftp_login($ftp_conn, $ftp_user_name, $ftp_user_pass);
// FTP upload
if($login_result) $upload_result=ftp_fput($ftp_conn, $remote_file, $local_file, FTP_ASCII);
// Error handling
if(!$login_result or !$upload_result)
{
echo('<p>FTP error: The file could not be written to the FTP server.</p>');
}
// Close FTP connection
ftp_close($ftp_conn);
// Close file handle
fclose($local_file); }
// Function call
ftp_file_put_contents('my-file.txt', 'This text will be written to your text file via FTP.');
我在这里回答的不是注释,因为注释忽略了代码格式。
您可以尝试:
$fp = fopen('php://temp', 'r+');
fwrite($fp, $out);
rewind($fp);
ftp_fput($ftp_conn, $remote_file_name, $fp, FTP_ASCII);
这将创建一个临时流,而不实际将其写入磁盘。我不知道有什么其他方法
问题内容: 我正在尝试创建文件并将其保存到站点的根目录,但是我不知道它在哪里创建文件,因为看不到任何文件。而且,如果可能的话,我需要每次都覆盖该文件。 这是我的代码: 如何设置保存在根目录下? 问题答案: 它在与脚本相同的目录中创建文件。试试这个吧。
我正在尝试将文件上载到FTP服务器 正如我在这里发现的,如何将文件上传到FTP服务器?,我有以下代码:
我有一个要求,我需要下载某些。从FTP服务器压缩文件,并将存档的内容(内容是一些XML文件)推送到HDFS(Hadoop分布式文件系统)。因此,到目前为止,我正在使用acpache FTPClient连接到FTP服务器,并首先将文件下载到本地计算机。稍后将其解压缩,并给出一个方法的文件夹路径,该方法将迭代本地文件夹并将文件推送到HDFS。为了便于理解,我还在下面附加了一些代码片段。 现在,这种方法
问题内容: 是否可以在不使用PHP的情况下使用JavaScript / jQuery将文本保存到新的文本文件中?我要保存的文本可能包含我不想转义或使用urlencode的HTML实体,JS,HTML,CSS和PHP脚本! 如果只能使用PHP来实现,如何将文本传递给PHP而不进行编码? 问题答案: 您必须具有服务器端脚本来处理您的请求,但这不能使用javascript完成。 要将没有URIencod
问题内容: 我正在编写一个应用程序,该应用程序从url下载图像,然后使用aws-sdk将其上传到S3存储桶。 以前,我只是下载图像并将其保存到磁盘中,就像这样。 然后像这样将图像上传到AWS S3 但是我想跳过将图像保存到磁盘的部分。有什么办法可以让我对一个变量进行响应,然后将其上传? 问题答案: 这是一些可以很好地做到这一点的javascript:
问题内容: 我使用以下代码从ftp下载文件到内存: 如何使它直接将文件发送给用户(浏览器)而不保存到磁盘,也无需重定向到ftp服务器? 问题答案: 只需删除输出缓冲(和其他)。 仅使用此: 虽然如果要添加标题,则必须先使用来查询文件大小: (添加错误处理)