使用PHP从Base64下载FTP图像

使用PHP从Base64下载FTP图像,php,ftp,base64,Php,Ftp,Base64,我有一个图像(在Base64中),我需要使用PHP将其FTP到远程服务器。我怎样才能做到这一点 这是我最新的尝试 // Image $handle = fopen('data://image/jpeg;base64,'.$base64, 'r'); // Setup and login $creds = array( 'server' => '*****', 'user' => '*****', 'pass' => '*****' ); $conn =

我有一个图像(在Base64中),我需要使用PHP将其FTP到远程服务器。我怎样才能做到这一点

这是我最新的尝试

// Image
$handle = fopen('data://image/jpeg;base64,'.$base64, 'r');

// Setup and login
$creds = array(
    'server' => '*****',
    'user' => '*****',
    'pass' => '*****'
);
$conn = ftp_connect($creds['server']);
$loginResult = ftp_login($conn, $creds['user'], $creds['pass']); 

// Upload 
ftp_fput($conn, '/path/to/file.jpg', $handle, FTP_ASCII);

// Cleanup
ftp_close($conn);
fclose($handle);

有人知道我做错了什么吗?

二进制文件应该以二进制模式传输

ftp_fput($conn, '/path/to/file.jpg', $handle, FTP_BINARY);

二进制文件应以二进制模式传输

ftp_fput($conn, '/path/to/file.jpg', $handle, FTP_BINARY);

通过一点研究:|我已经尝试了许多变化,但我得到的只是一个看起来非常扭曲的各种颜色和形状的图像。。。不是我输入的图像。文件大小似乎正确,但似乎已损坏。我将用我最近的尝试更新我的问题。我肯定遗漏了什么。两个问题:这是你代码的精简版本吗
fopen
返回一个资源句柄——仅此而已(不是文件本身),我相当确定您不能像那样fopen数据uri。
$base64
数据从哪里来?FTP传输不需要对其进行base64编码-它应该以二进制模式解码和发送。(鉴于
$base64
变量尚未包含uri方案,我是否可以假设您首先对图像进行了编码?-在这种情况下,可能不需要解决方案的这一部分)是,这是用于测试的压缩版本
$base64
已经被编码,并且正在从我们的数据库中提取(我不喜欢以这种方式保存图像,但在当前的设置中没有选择)。通过一点研究:|我已经尝试了许多变体,但我得到的只是一个看起来非常扭曲的各种颜色和形状的图像。。。不是我输入的图像。文件大小似乎正确,但似乎已损坏。我将用我最近的尝试更新我的问题。我肯定遗漏了什么。两个问题:这是你代码的精简版本吗
fopen
返回一个资源句柄——仅此而已(不是文件本身),我相当确定您不能像那样fopen数据uri。
$base64
数据从哪里来?FTP传输不需要对其进行base64编码-它应该以二进制模式解码和发送。(鉴于
$base64
变量尚未包含uri方案,我是否可以假设您首先对图像进行了编码?-在这种情况下,可能不需要解决方案的这一部分)是,这是用于测试的压缩版本
$base64
已经编码,正在从我们的数据库中提取(我不喜欢以这种方式保存图像,但在当前的设置中没有选择)。