public static function UploadMusic($oriFilePath, $fileName, User $user, $diskName = null) { $fs = Storage::disk($diskName); $fileContent = $fs->get($oriFilePath); $mimeType = $fs->mimeType($oriFilePath); if (!str_is('audio/*', $mimeType) && !str_is('video/*', $mimeType)) { $fs->delete($oriFilePath); throw new RequestValidationException(RequestValidationException::FileIsNotMusic); } $fileModel = self::saveFileByFileContent($fileContent, $fileName, $mimeType, $user, $diskName); $fs->delete($oriFilePath); $getId3Result = self::analyzeFileByGetId3($fileModel); // 标签数据 if ($getId3Result && isset($getId3Result['tags'])) { $types = ['quicktime', 'ape', 'id3v2', 'id3v1']; foreach ($types as $type) { if (!isset($getId3Result['tags'][$type])) { continue; } $tag = $getId3Result['tags'][$type]; $tag_title = implode(';', isset($tag['title']) ? $tag['title'] : []); $tag_artist = implode(';', isset($tag['artist']) ? $tag['artist'] : []); $tag_album = implode(';', isset($tag['album']) ? $tag['album'] : []); $tag_year = implode(';', isset($tag['creation_date']) ? $tag['creation_date'] : (isset($tag['year']) ? $tag['year'] : [])); $tag_track = implode(';', isset($tag['track_number']) ? $tag['track_number'] : (isset($tag['track']) ? $tag['track'] : [])); $tag_genre = implode(';', isset($tag['genre']) ? $tag['genre'] : []); // $tag_comment = implode(';', isset($tag['comment']) ? $tag['comment'] : []); $tag_album_artist = implode(';', isset($tag['album_artist']) ? $tag['album_artist'] : []); $tag_composer = implode(';', isset($tag['composer']) ? $tag['composer'] : []); // $tag_disc_number = implode(';', isset($tag['disc_number']) ? $tag['disc_number'] : []); break; } } // 封面图 if ($getId3Result && isset($getId3Result['comments']) && isset($getId3Result['comments']['picture']) && isset($getId3Result['comments']['picture']['0']) && isset($getId3Result['comments']['picture']['0']['data'])) { $coverData = $getId3Result['comments']['picture']['0']['data']; $coverTempFile = FileManager::saveTempFileByFileContent($coverData, $user); // $coverFileGetId3Result = self::analyzeFileByGetId3($coverTempFile); $coverFileName = sprintf('%s-cover-file', isset($tag_title) && $tag_title ? $tag_title : $fileName); $coverImage = self::UploadImage($coverTempFile->baseFile->path, $coverFileName, $user); } $music = new Music(); $music->title = isset($tag_title) && $tag_title ? $tag_title : $fileModel->name; if (isset($tag_artist) && $tag_artist) { $music->artist = $tag_artist; } else { if (isset($tag_composer) && $tag_composer) { $music->artist = $tag_composer; } else { if (isset($tag_album_artist) && $tag_album_artist) { $music->artist = $tag_album_artist; } else { $music->artist = null; } } } $music->year = isset($tag_year) && $tag_year ? $tag_year : null; if (isset($tag_track) && $tag_track) { $tmp = explode('/', $tag_track); $trackNum = is_array($tmp) && sizeof($tmp) > 0 ? $tmp[0] : $tag_track; $music->track = $trackNum; } $music->genre = isset($tag_genre) && $tag_genre ? $tag_genre : null; $music->playtime = isset($getId3Result['playtime_seconds']) ? $getId3Result['playtime_seconds'] : null; $music->bitrate = isset($getId3Result['bitrate']) ? $getId3Result['bitrate'] : null; $music->album_title = isset($tag_album) && $tag_album ? $tag_album : null; $music->album_artist = isset($tag_album_artist) && $tag_album_artist ? $tag_album_artist : null; $music->tags = $getId3Result && isset($getId3Result['tags']) ? json_encode($getId3Result['tags']) : null; $music->file()->associate($fileModel); if (isset($coverImage) && $coverImage) { $music->coverImage()->associate($coverImage); } $music->save(); return $music; }
public function getUploadedFileSize(Guard $guard, Request $request) { if ($guard->guest()) { throw new AppException(AppException::NEED_SIGN_IN); } $uniName = $guard->id() . '-' . md5($request->get('uniName')); $size = FileManager::getMergingFileSize($uniName); return response()->json($size); }