Php 以字符串形式从ftp获取数据

Php 以字符串形式从ftp获取数据,php,ftp,gd,Php,Ftp,Gd,是否可以从ftp获取字符串形式的数据?我想通过imagecreatefromstring创建图像,但找不到它的任何ftp功能。我需要它,因为我担心可能会上载第三方php代码而不是图像。您可以使用以下代码通过FTP以字符串形式获取文件内容: function ftp_get_string($ftp, $filename) { $temp = fopen('php://temp', 'r+'); if (@ftp_fget($ftp, $temp, $filename, FTP_BI

是否可以从ftp获取字符串形式的数据?我想通过
imagecreatefromstring
创建图像,但找不到它的任何ftp功能。我需要它,因为我担心可能会上载第三方php代码而不是图像。

您可以使用以下代码通过FTP以字符串形式获取文件内容:

function ftp_get_string($ftp, $filename) {
    $temp = fopen('php://temp', 'r+');
    if (@ftp_fget($ftp, $temp, $filename, FTP_BINARY, 0)) {
        rewind($temp);
        return stream_get_contents($temp);
    }
    else {
        return false;
    } 
}
$ftp
将是由返回的ftp连接资源


免责声明:代码不是我的;它几乎是从php.net的评论中一字不差地写出来的。

另一种方法是使用:


@然后它会被下载到一个临时文件中。您可以使用
php://memory
如果要避免这种情况,但如果文件足够大,则可能会出现内存不足的风险。
/**
 * @param $ftp ftp connexion id
 * @param $filename distant file name
 * @return a string with file content or FALSE
 */ 
function ftp_get_string($ftp, $filename) {
    ob_start();
    $result = ftp_get($ftp, "php://output", $filename, FTP_BINARY);
    $data = ob_get_contents();
    ob_end_clean();
    return $result === FALSE ? false : $data;
}