putString($key, $value); } public function uploadDefaultAvatarImage() { $filename = public_path('static/admin/img/default_avatar.png'); $key = '/img/avatar/default.png'; return $this->putFile($key, $filename); } public function uploadDefaultCoverImage() { $filename = public_path('static/admin/img/default_cover.png'); $key = '/img/cover/default.png'; return $this->putFile($key, $filename); } /** * 上传封面图片 * * @return UploadModel|bool */ public function uploadCoverImage() { return $this->upload('/img/cover/', self::MIME_IMAGE, UploadModel::TYPE_COVER_IMG); } /** * 上传内容图片 * * @return UploadModel|bool */ public function uploadContentImage() { return $this->upload('/img/content/', self::MIME_IMAGE, UploadModel::TYPE_CONTENT_IMG); } /** * 上传头像图片 * * @return UploadModel|bool */ public function uploadAvatarImage() { return $this->upload('/img/avatar/', self::MIME_IMAGE, UploadModel::TYPE_AVATAR_IMG); } /** * 上传课件资源 * * @return UploadModel|bool */ public function uploadResource() { return $this->upload('/resource/', self::MIME_FILE, UploadModel::TYPE_RESOURCE); } /** * 上传im图片 * * @return UploadModel|bool */ public function uploadImImage() { return $this->upload('/im/img/', self::MIME_IMAGE, UploadModel::TYPE_IM_IMG); } /** * 上传im文件 */ public function uploadImFile() { return $this->upload('/im/file/', self::MIME_FILE, UploadModel::TYPE_IM_FILE); } /** * 上传文件 * * @param string $prefix * @param string $mimeType * @param int $uploadType * @return UploadModel|bool */ protected function upload($prefix, $mimeType, $uploadType) { $list = []; if ($this->request->hasFiles(true)) { $files = $this->request->getUploadedFiles(true); $uploadRepo = new UploadRepo(); foreach ($files as $file) { if ($this->checkFile($file->getRealType(), $mimeType) == false) { continue; } $md5 = md5_file($file->getTempName()); $upload = $uploadRepo->findByMd5($md5); if ($upload == false) { $name = $this->filter->sanitize($file->getName(), ['trim', 'string']); $extension = $this->getFileExtension($file->getName()); $keyName = $this->generateFileName($extension, $prefix); $path = $this->putFile($keyName, $file->getTempName()); $upload = new UploadModel(); $upload->name = $name; $upload->mime = $file->getRealType(); $upload->size = $file->getSize(); $upload->type = $uploadType; $upload->path = $path; $upload->md5 = $md5; $upload->create(); } $list[] = $upload; } } return $list[0] ?: false; } /** * 检查上传文件 * * @param string $mime * @param string $alias * @return bool */ protected function checkFile($mime, $alias) { switch ($alias) { case self::MIME_IMAGE: $result = FileInfo::isImage($mime); break; case self::MIME_VIDEO: $result = FileInfo::isVideo($mime); break; case self::MIME_AUDIO: $result = FileInfo::isAudio($mime); break; default: $result = FileInfo::isSecure($mime); break; } return $result; } }