示例#1
0
 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;
 }
示例#2
0
 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);
 }