request->post('rootPath'); if (!empty($rootPath) && in_array($rootPath, oss::ROOT_PATHS)) { $uploadPath = $rootPath; } $file = $_FILES['file']; if (!is_uploaded_file($file['tmp_name'])) { util::fail('please upload img'); } $mainId = $this->mainId; // 变动:$this->sjId 改为 $this->mainId if (intval($mainId) == 0) { Yii::error('------- lose token -------'); noticeUtil::push('save-file 无token进行上传文件'); return; } $shopId = $this->shopId; $month = date("Ym"); $date = date("d"); $path = dirUtil::getImgUploadDir() . "/{$mainId}/{$shopId}/{$month}/{$date}/"; // 检查目录是否存在,如果不存在则尝试创建。 // 使用 @ 抑制 mkdir 在目录已存在时(并发导致)的 warning。 // 如果 mkdir 失败,则再次检查目录是否存在,以区分是并发创建成功还是真的创建失败。 if (!is_dir($path) && !@mkdir($path, 0700, true) && !is_dir($path)) { throw new \yii\web\ServerErrorHttpException("目录 '{$path}' 创建失败。"); } $preFileName = stringUtil::uniqueFileName(); $newFile = $preFileName . ".jpg"; $fullPathFile = $path . $newFile; if (move_uploaded_file($file['tmp_name'], $fullPathFile)) { $img = "{$uploadPath}/{$mainId}/{$shopId}/{$month}/{$date}/" . $newFile; oss::uploadImage($img, $fullPathFile); $data = business::formatUploadImg($img); $data['shortUrl'] = $img; $data['smallShortUrl'] = $img . "?x-oss-process=image/resize,l_200"; util::success($data, 'ok'); } else { util::fail('fail'); } } //上传图片接口 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['sjId'] != $this->sjId) { util::fail('请选择自己的分类'); } } } //匹配出图片的格式 if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)) { $type = $result[2]; $sjId = $this->sjId; $month = date("Ym"); $date = date("d"); $path = dirUtil::getImgUploadDir() . "/{$sjId}/{$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/{$sjId}/{$month}/{$date}/" . $newFile; oss::uploadImage($img, $fullPathFile); $data = business::formatUploadImg($img); $data['shortUrl'] = $img; $data['smallShortUrl'] = $img . "?x-oss-process=image/resize,l_200"; util::success($data); } util::fail('上传失败!'); } //保存图片 ssh 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]; $sjId = 12358; $month = date("Ym"); $date = date("d"); $path = dirUtil::getImgUploadDir() . "/{$sjId}/{$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/{$sjId}/{$month}/{$date}/" . $newFile; $data = business::formatUploadImg($img); $data['shortUrl'] = $img; util::success($data); } } //上传图片--小菊 public function actionNewSave() { header('Content-type:text/html;charset=utf-8'); $base64 = file_get_contents('php://input'); $base64_image_content = str_replace("content=", "", urldecode($base64)); //匹配出图片的格式 if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)) { $type = $result[2]; $sjId = 0; $month = date("Ym"); $date = date("d"); $path = dirUtil::getImgUploadDir() . "/{$sjId}/{$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/{$sjId}/{$month}/{$date}/" . $newFile; //上传oss 2021.3.18 lqh oss::uploadImage($img, $fullPathFile); $data = business::formatUploadImg($img); $data['shortUrl'] = $img; util::success($data); } util::fail('上传失败!'); } //批量导入客户 ssh 2024426 public function actionCustom() { $file = $_FILES['file']; if (!is_uploaded_file($file['tmp_name'])) { util::fail('please upload img'); } $mainId = $this->sjId; $shopId = $this->shopId; $month = date("Ym"); $date = date("d"); $path = dirUtil::getImgUploadDir() . "/{$mainId}/{$shopId}/{$month}/{$date}/"; if (!file_exists($path)) { //检查是否有该文件夹,如果没有就创建,并给予最高权限 mkdir($path, 0700, true); } $preFileName = stringUtil::uniqueFileName(); //$newFile = $preFileName . ".txt"; $newFile = $preFileName . ".txt"; $fullPathFile = $path . $newFile; if (move_uploaded_file($file['tmp_name'], $fullPathFile)) { // //队列方式去处理 // $customerCachedKey = 'file_batch_create_customer_list'; $value = $shopId . ',' . $fullPathFile; // Yii::$app->redis->executeCommand('LPUSH', [$customerCachedKey, $value]); noticeUtil::push("待批量导入客户的文件:" . $value, '15280215347'); util::complete(); } else { util::fail('fail'); } } //删除oss上的图片 public function actionDeleteFile() { $filePath = Yii::$app->request->post('filePath'); if(empty($filePath)){ util::fail('参数错误'); } // 删除前判断文件是否存在 if(!oss::fileExist($filePath)){ Yii::error('file not exist: ' . $filePath); util::fail('file not exist'); } else { Yii::info('file exist: ' . $filePath); } // 删除OSS文件 try { // 设置超时时间为15秒 set_time_limit(15); $startTime = time(); $timeout = 15; // 15秒超时 oss::deleteObject($filePath); // 检查是否超时 if (time() - $startTime > $timeout) { throw new \Exception('删除文件操作超时'); } } catch (\Exception $e) { util::fail('删除文件失败:' . $e->getMessage()); } util::success('success'); } //批量删除oss上的图片 public function actionDeleteFiles() { $filePaths = Yii::$app->request->post('filePaths'); if(empty($filePaths) || !is_array($filePaths)){ util::fail('参数错误'); } foreach($filePaths as $filePath){ if(!oss::fileExist($filePath)){ Yii::error('file not exist: ' . $filePath); util::fail('file not exist'); } else { Yii::info('file exist: ' . $filePath); } } // 删除OSS文件 try { oss::deleteObjects($filePaths); } catch (\Exception $e) { util::fail('删除文件失败:' . $e->getMessage()); } util::success('success'); } }