Как создать файл с очень большой длиной содержимого

У меня проблема с записью нового файла изображения из image-data (dataurl). Изображения ниже 1 мб проблем нет file_put_contents, Но если файл больше 1 мб. Функция не работает.

Процедура

  1. DataUrl был отправлен print.php через AJAX с длиной 1436190.
  2. print.php это получить переменную $_POST['image'] а также $_POST['filename']
  3. print.php сохранить файл на жесткий диск с file_put_contents($photo, $data);

Вот print.php сценарий:

<?php
header('Content-Type: image/jpeg');
ini_set('memory_limit', '128M');
$data=$_POST['image'];
if(!$_POST['filename']){
exit("error");
}
list($dir,$folder,$file)=explode("/",$_POST['filename']);
$ext=strtolower(pathinfo($_POST['filename'], PATHINFO_EXTENSION));

$file=basename($file,".".$ext);
$data = base64_decode($data);

$imgRes = imagecreatefromstring($data);
if($imgRes !== false && imagejpeg($imgRes, $file,"100") === true)
if(!is_dir($dir.'/'.$folder.'/new/')){
mkdir($dir.'/'.$folder.'/new/',0777);
}
$photo=$dir.'/'.$folder.'/new/'.$file.'-'.time().".".$ext;//full url

$saved=file_put_contents($photo, $data);
if($saved){
echo "ok";
}else{
echo "error";
}
imagedestroy($imgRes);
?>

Я пытался понять это. Но это не работает. Ничего не показывает в консоли. Или есть ли более разумный способ добиться этого, чем file_put_contents?

0

Решение

Первый: «Его функция возвращает количество байтов, которые были записаны в файл, или FALSE при ошибке». Используйте -> если ($ сохранено! == ЛОЖЬ) ОК, иначе ошибка

Во-вторых: file_put_contents — записывает строку в файл. Тогда вам нужно использовать -> fwrite () — Бинарно-безопасная запись в файл.

http://php.net/manual/en/function.file-put-contents.php

http://php.net/manual/en/function.fwrite.php

Удачи!

0

Другие решения

Других решений пока нет …