request->post('categoryId', []); if (!empty($categoryIds)) { $categoryList = CategoryService::getByIds($categoryIds); foreach ($categoryList as $cat) { if ($cat['merchantId'] != $this->merchantId) { util::fail('请选择自己的分类'); } } } //匹配出图片的格式 if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)) { $type = $result[2]; $merchantId = $this->merchantId; $month = date("Ym"); $date = date("d"); $path = dirUtil::getImgUploadDir() . "/{$merchantId}/{$month}/{$date}/"; if (!file_exists($path)) { //检查是否有该文件夹,如果没有就创建,并给予最高权限 mkdir($path, 0700, true); } $preFileName = stringUtil::uniqueFileName(); $newFile = $preFileName . ".{$type}"; $fullPathFile = $path . $newFile; if (file_put_contents($fullPathFile, base64_decode(str_replace($result[1], '', $base64_image_content))) == false) { util::fail('上传失败!!'); } $img = "/uploads/{$merchantId}/{$month}/{$date}/" . $newFile; $imgInfo = getimagesize($fullPathFile); $width = $imgInfo[0]; $height = $imgInfo[1]; //如果图片太大,进行压缩,并删除原图 if ($width > 800) { $newWidth = 800; $newHeight = ceil((800 * $height) / $width); $preFileName = stringUtil::uniqueFileName(); $newFile = $preFileName . ".{$type}"; $newFullPathFile = $path . $newFile; Image::thumbnail($fullPathFile, $newWidth, $newHeight)->save($newFullPathFile, ['quality' => 100]); $width = $newWidth; $height = $newHeight; $img = "/uploads/{$merchantId}/{$month}/{$date}/" . $newFile; unlink($fullPathFile); $fullPathFile = $newFullPathFile; } //生成小图 200px $smallWidth = 200; $smallHeight = ceil((200 * $height) / $width); $smallFullPathFile = $path . $preFileName . '_small.' . $type; Image::thumbnail($fullPathFile, $smallWidth, $smallHeight)->save($smallFullPathFile, ['quality' => 100]); $data = business::formatUploadImg($img); if (!empty($categoryIds)) { $time = time(); $data = ['img' => $img, 'merchantId' => $merchantId, 'name' => '未命名', 'addTime' => $time]; $pic = PicService::add($data); $currentId = $pic['id']; $add = []; foreach ($categoryIds as $cat) { $add[] = ['categoryId' => $cat, 'picId' => $currentId, 'merchantId' => $this->merchantId]; } PicCategoryService::batchAdd($add); } $data['shortUrl'] = $img; util::success($data); } util::fail('上传失败!'); } //保存图片 shish 2019.12.20 public function actionSave() { header('Content-type:text/html;charset=utf-8'); $base64_image_content = ''; //匹配出图片的格式 if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)) { $type = $result[2]; $merchantId = 12358; $month = date("Ym"); $date = date("d"); $path = dirUtil::getImgUploadDir() . "/{$merchantId}/{$month}/{$date}/"; if (!file_exists($path)) { //检查是否有该文件夹,如果没有就创建,并给予最高权限 mkdir($path, 0700, true); } $preFileName = stringUtil::uniqueFileName(); $newFile = $preFileName . ".{$type}"; $fullPath = $path . $newFile; if (file_put_contents($fullPath, base64_decode(str_replace($result[1], '', $base64_image_content))) == false) { util::fail('上传失败'); } $img = "/uploads/{$merchantId}/{$month}/{$date}/" . $newFile; $data = business::formatUploadImg($img); $data['shortUrl'] = $img; util::success($data); } } }