PHP - получить base64 img декодирование строки и сохранить как JPG (в результате пустое изображение)
привет яя на самом деле отправляю строку изображения base64 через ajax в скрипт php, который просто декодирует строку и сохраняет содержимое в виде файла .jpg.
Но результат - пустое изображение.
Как это может быть возможным?
PHP скрипт:
$uploadedPhotos = array('photo_1','photo_2','photo_3','photo_4');
foreach ($uploadedPhotos as $file) {
if($this->input->post('photo_1')){
$photoTemp = base64_decode($this->input->post('photo_1'));
/*Set name of the photo for show in the form*/
$this->session->set_userdata('upload_'.$file,'ant');
/*set time of the upload*/
if(!$this->session->userdata('uploading_on_datetime')){
$this->session->set_userdata('uploading_on_datetime',time());
}
$datetime_upload = $this->session->userdata('uploading_on_datetime',true);
/*create temp dir with time and user id*/
$new_dir = 'temp/user_'.$this->session->userdata('user_id',true).'_on_'.$datetime_upload.'/';
@mkdir($new_dir);
/*move uploaded file with new name*/
@file_put_contents( $new_dir.$file.'.jpg',$photoTemp);
}
Для ajax это нормально, потому что echo $ photoTemp возвращает строку.
Я старалсяvar_dump(@file_put_contents( $new_dir.$file.'.jpg',$photoTemp));
и он возвращаетсяbool(true)
так как изображение сохранено, но в изображении нет содержимого :( пустое изображение
для пустого изображения я имею в виду, файл создан и назван, и он имеет тот же размер содержимого, которое я передаю php, но когда я пытаюсь открыть это изображение для предварительного просмотра, он говорит, что файл может 'не может быть открыт из-за поврежденного или неверного формата файла
в любом случае это JS, который берет фотографию как base64 и отправляет ее на php:
var _min_width = 470;
var _min_height = 330;
var _which;
var _fyle_type;
var io;
var allowed_types = new Array('image/png','image/jpg','image/jpeg');
if (typeof(FileReader) === 'function'){
$('input[type="file"]').on('change', function(e) {
var _file_name = $(this).val();
$('.'+_which+'_holder').text(_file_name);
var file = e.target.files[0];
if (!in_array(file.type,allowed_types) || file.length === 0){
notify("You must select a valid image file!",false,false);
return;
}
if(file.size > 3145728 /*3MB*/){
notify("",false,false);
return;
}
notify_destroy();
var reader = new FileReader();
reader.onload = fileOnload;
reader.readAsDataURL(file);
});
function fileOnload(e) {
var img = document.createElement('img');
img.src = e.target.result;
img.addEventListener('load', function() {
if(img.width < _min_width || img.height < _min_height ){
notify("",false,false);
return;
}
$.ajax({
type:'post',
dataType:'script',
data:{photo_1:e.target.result},
url:_config_base_url+'/upload/upload_photos',
progress:function(e){
console.log(e);
},
success:function(d){
$('body').append('<img src="'+d+'">');
}
});
});
}
}