使用php在base64上的服务器上无法上传大图像

时间:2017-03-14 09:13:54

标签: php json image base64

我做了一个Api,我必须上传base64格式的图像, 但是当我尝试以base64格式上传大图像(820 KB)时,它正在显示 500内部服务器错误&如果我试图上传小图像(16 KB)然后它 上传成功。我还检查了服务器上传大小限制 它是64mb。我不明白为什么它没有上传大型base64图像字符串。 下面是我的json请求和api的php代码。

PHP代码

<?php
 $jsonreq = $app->request->getBody();
 $encodedata = json_decode($jsonreq, true);
 $userid = !empty($encodedata['userid']) ? $encodedata['userid'] : '';
        $goal = !empty($encodedata['goal']) ? $encodedata['goal'] : '';
        $title = !empty($encodedata['title']) ? addslashes($encodedata['title']) : '';
        $category = !empty($encodedata['category']) ? $encodedata['category'] : '';
        $story = !empty($encodedata['story']) ? $encodedata['story'] : '';
        $image = !empty($encodedata['photo']) ? $encodedata['photo'] : '';
        $db = getDB();
        $sql = "SELECT * FROM users where id='" . $userid . "'";
        $stmt = $db->query($sql);
        $obj = new stdClass();
        if ($stmt->rowCount() > 0) {
            if ($image != "" || $image != NULL) {
                $users = $stmt->fetch(PDO::FETCH_OBJ);
                $img = str_replace('data:image/png;base64,', '', $image);
                $img = str_replace(' ', '+', $img);
                $fileName = uploadBase64Image($userid, $img, uploadFundraiserImage);
                $imagepath = uploadFundraiserImage . $fileName;
                $imagepath = str_replace('../', '', $imagepath);
            } else {
                $imagepath = '';
            }

?>

以下是我的json请求

  {
    "goal":22,
    "title":"test new2",
    "story":"test new2",
    "category":"health",
    "userid":"46",
    "photo":"here we paste base64 image string"  
    }

如果我们以大图像为例,我的imge大小为800 kb以下的base64字符串,那么它显示500以下字符串的内部服务器错误。我无法粘贴bas64字符串,因为它很长但是如果我们拍摄800kb或更多的图像,而不是显示以下错误。

500 Internal Server Error
Internal Server Error
The server encountered an internal error or
misconfiguration and was unable to complete
your request.

1 个答案:

答案 0 :(得分:0)

我刚刚在我的域上关闭了ModSec。之后,它的工作正常,服务器配置错误,代码中没有错误。