| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?php
- namespace hd\controllers;
- use bizHd\goods\services\CategoryService;
- use bizHd\goods\services\PicCategoryService;
- use bizHd\goods\services\PicService;
- use common\components\business;
- use common\components\dirUtil;
- use common\components\stringUtil;
- use Yii;
- use common\components\util;
- use yii\imagine\Image;
- class UploadController extends BaseController
- {
-
- public $guestAccessAction = [];
-
- //上传图片接口
- public function actionSaveImg()
- {
- header('Content-type:text/html;charset=utf-8');
- $base64 = file_get_contents('php://input');
- $base64_image_content = str_replace("content=", "", urldecode($base64));
- $categoryIds = Yii::$app->request->post('categoryId', []);
- if (!empty($categoryIds)) {
- $categoryList = CategoryService::getByIds($categoryIds);
- foreach ($categoryList as $cat) {
- if ($cat['merchantId'] != $this->sjId) {
- util::fail('请选择自己的分类');
- }
- }
- }
-
- //匹配出图片的格式
- if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)) {
- $type = $result[2];
- $merchantId = $this->sjId;
- $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->sjId];
- }
- 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);
- }
- }
-
- }
|