如何从非常长的内容长度创建文件

时间:2015-08-03 14:28:27

标签: php ajax data-url file-put-contents

我遇到了从图像数据(dataurl)编写新图像文件的问题。低于1 mb的图像对file_put_contents没问题。但是如果文件大于1 mb。该功能不起作用。

程序

  1. DataUrl通过ajax发送到print.php,长度为1436190.
  2. print.php获取var $_POST['image']$_POST['filename']
  3. print.php使用file_put_contents($photo, $data);
  4. 将文件保存到hdd

    这是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

1 个答案:

答案 0 :(得分:0)

首先:“他的函数返回写入文件的字节数,或者失败时返回FALSE。” 使用 - &gt; if($ saved!== FALSE)OK else error

第二名: file_put_contents - 将字符串写入文件。 然后你需要使用 - &gt; fwrite() - 二进制安全文件写入。

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

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

祝你好运!