PHP实现app端base64编码文件上传

PHP实现app端base64编码文件上传

26 Sep 2017

 

 

 

 

 

需求

iOS或Android客户端需要上传用户头像,PHP后端接收并保存到FTP服务器,客户端统一将文件以base64编码,然后post提交给PHP服务端

 

解决

话不多说,直接上代码

// 接收并解码
$avatar = trim($_POST['avatar']);
$avatar = str_replace(" ", "+", $avatar);
$avatar = base64_decode($avatar);
//限制文件格式
$finfo = new finfo(FILEINFO_MIME_TYPE);
$type = str_replace('image/', '', $finfo->buffer($avatar));
$limitType = array('jpg', 'gif', 'png', 'jpeg', 'bmp');
if (!in_array($type, $limitType)) {
    die('文件格式非法!');
}
// 创建临时文件
$handle = tmpfile();
fwrite($handle, $avatar);
rewind($handle);
// 连接并上传文件到ftp
$ftp = ftp_connect('host', 'port', 'timeout');
ftp_login($ftp, 'username', 'password');
ftp_pasv($ftp, true);
$rootpath = ftp_pwd($ftp).'/xxx';
if (!@ftp_chdir($ftp, $rootpath)) {
    die('上传目录错误!');
}
ftp_fput($ftp, $filepath, $handle, FTP_BINARY);
ftp_close ($ftp);
fclose($handle);

// 数据库保存数据
// ......