PHP部分上传图片

时间:2018-03-25 22:20:39

标签: php upload

所以,这就是问题:我上传了一个文件,它已成功上传。但它部分上传的图像:第一个700kb上传,而图像的其余部分只是白色或灰色。 这是一个例子: enter image description here

脚本本身正常工作,我尝试了不同的主机,但它只在特定主机上执行此“技巧”。我认为这是一个很好的服务器配置。它使用cpanel。我的php选项设置为具有最大内存限制,上传限制和post_size。 这是脚本:

$filename           = basename($_SERVER['QUERY_STRING']);

if (!empty($_POST)) {

    $error                  = false;

    $absolutedir            = dirname(__FILE__);
    $dir                    = '/tmp/';
    $serverdir              = $absolutedir.$dir;

    $tmp                    = explode(',',$_POST['file']);
    $file                   = base64_decode($tmp[1]);

    $extension              = strtolower(end(explode('.',$_POST['filename'])));
    $filename               = $_POST['name'].'.'.$extension;
    //$filename             = $file.'.'.substr(sha1(time()),0,6).'.'.$extension;

    file_put_contents($serverdir.$filename, $file);

    /*$handle                   = fopen($serverdir.$filename,'w');
    fwrite($handle, $file);
    fclose($handle);*/

    $response = array(
            "result"        => true,
            "url"           => $dir.$filename.'?'.time(), //added the time to force update when editting multiple times
            "filename"      => $filename
    );

    echo json_encode($response);
    //echo json_encode(array('result'=>true));

} else {
    $filename           = basename($_SERVER['QUERY_STRING']);
    $file_url           = dirname(__FILE__).'/tmp/'.$filename;
    header('Content-Type:               application/octet-stream');
    header("Content-Transfer-Encoding:  Binary");
    header("Content-disposition:        attachment; filename=\"" . basename($file_url) . "\"");
    readfile($file_url); 
    exit();
}

file_put_contentsfwrite都有相同的行为。

让我们回顾一下:image< 700kb =完全上传。图像> 700kb,首先上传700kb,其余图像为灰色或白色。我很困惑。

HTML表单:

<form enctype="multipart/form-data" role="form" action="html5fileupload.form.php" method="POST" class="contactForm validateIt" data-email-subject="Request Form" data-show-errors="true" >
   <div class="html5fileupload demo_basic" data-url="html5fileupload.php" data-max-filesize="12288000" data-multiple="true"  data-autostart="true" style="width: 100%;">
<input id="file" type="file" name="file[]" multiple> 
</div>
</form>

0 个答案:

没有答案