从前端上传图片到后端,然后php进行处理,完全不需要传base64的字符串,base64可以在上传到后端前,给用户预览,减少不必要的上传,等用户真正确认后,才开始上传到服务器。
这是目前我自己博客后台用的一个简单的图片上传功能,可以供你参考一下:
前端,我这里用到了jQuery
$('.upfile').on('change', function(){ // 点击input[type=file]控件选择图片
if( !$(this).val() ){
return false;
}
var formData = new FormData(); // 创建一个formData对象,把图片封装进去
formData.append('file', $(this)[0].files[0]);
$.ajax({ // 提交数据
url: '/admin/upimg',
type: 'POST',
cache: false,
data: formData,
processData: false,
contentType: false
}).done(function(res) {
// console.log(res);
// console.log(typeof res);
// console.log(res.code==0);
// console.log(res.data.url);
res = JSON.parse(res);
if( res.code==0 ){
$('.showpath').text( 'success: '+res.data.url );
}else{
}
}).fail(function(res) {});
})
后端使用$_FILES获取到相关的图片列表
$file_name = iconv("UTF-8","gb2312", $_FILES['file']['name']); //文件名称
$filenames= explode(".",$file_name);
$file = $_FILES['file'];
$tempfile = $file['tmp_name'];
$targetFolder = '/upload/' .time().rand(1000, 9999).".".$filenames[count($filenames)-1]; // 重命名
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder; //图片存放目录
$targetFile = rtrim($targetPath,'/'); //图片完整路徑
// echo $targetFile;
// Validate the file type
$fileTypes = array('jpg', 'jpeg', 'png', 'gif', 'svg'); // File extensions
$fileParts = pathinfo($_FILES['file']['name']);
// print_r( $file );
// 判断当前上传的文件是否为图片格式
if (in_array($fileParts['extension'],$fileTypes)) {
$s = move_uploaded_file($tempfile, $targetFile); // 移动到服务器相关的目录
}