/** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request * @return \Illuminate\Http\Response */ public function store(Request $request) { $requestedSong = $this->GetUploadSongData($request->get('song_title'), $request->get('band_name')); $returnMsg = ""; if ($requestedSong != null && $requestedSong->is_accepted == 1) { $returnMsg = "Congratulation, you've picked a song that has been approved already by Organic Radio"; return redirect()->route('suggest')->with('success', $returnMsg); } else { if ($requestedSong != null && $requestedSong->is_accepted == 0) { $returnMsg = "Song already suggested but got rejected"; return redirect()->route('suggest')->with('error', $returnMsg); } else { if ($requestedSong != null && $requestedSong->is_accepted == null) { $returnMsg = "Song already suggested but is pending acceptance"; return redirect()->route('suggest')->with('error', $returnMsg); } } } if ($request->file('song_file') != null) { $file = $request->file('song_file'); } $music_style = new MusicStyle(); $musicPath = ""; if (isset($file) && $file->isValid()) { if ($file->getClientOriginalExtension() != "mp3") { return redirect()->route('suggest')->with('error', "Bad file extension!"); } if (file_exists("medias/" . $file->getClientOriginalName())) { return redirect()->route('suggest')->with('error', "File already exist."); } $musicPath = $file->getClientOriginalName(); $file->move("medias/", $file->getClientOriginalName()); } $music = new Music(); $music->title = $request->get('song_title'); $music->band = $request->get('band_name'); $music->style_id = $request->get('music_style') != "" ? $request->get('music_style') : null; $music->user_id = Auth::id(); $music->path = $musicPath; $music->save(); return redirect()->route('suggest')->with('success', "success"); }
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; }
protected function music_import_csv(Request $request) { $path = $request->path; $filename = $request->filename; $file = $path . '/' . $filename; $fp = fopen($file, 'r'); $i = 0; // 定义空数组,方便下面使用 $isUsed_arr = []; // 判断文件名是否有重复 while ($arr = fgetcsv($fp)) { $isFree = self::isNoUsedFileName(mb_convert_encoding($arr[7], 'UTF-8', 'GB2312')); // 将重复的文件名放入一个数组中 if (!$isFree) { $isUsed_arr[] = mb_convert_encoding($arr[7], 'UTF-8', 'GB2312'); } } // 如果存在重复的文件名,则返回 if (count($isUsed_arr) > 0) { $data['status'] = false; $data['errMsg'] = $isUsed_arr; return $data; } // 重置文件指针 rewind($fp); while ($arr = fgetcsv($fp)) { $i++; if ($i == 1) { continue; } // 方便后面判断读取了几行 $music = new Music(); $music->name = mb_convert_encoding($arr[0], 'UTF-8', 'GB2312'); // 查询乐曲id $instrument = mb_convert_encoding($arr[1], 'UTF-8', 'GB2312'); $instrument_in_db = Instrument::where('name', '=', $instrument)->first(); // 如果这个乐器不存在,则先创建 if (empty($instrument_in_db)) { $new_instrument = new Instrument(); $new_instrument->name = $instrument; $new_instrument->save(); $music->instrument_id = $new_instrument->id; } else { $music->instrument_id = $instrument_in_db->id; } // 作曲人 $music->composer = mb_convert_encoding($arr[2], 'UTF-8', 'GB2312'); // 版本 $music->version = mb_convert_encoding($arr[3], 'UTF-8', 'GB2312'); // 出版社 $press = mb_convert_encoding($arr[4], 'UTF-8', 'GB2312'); $press_in_db = Press::where('name', $press)->first(); // 如果这个出版社不存在,则先创建 if (empty($press_in_db)) { $new_press = new Press(); $new_press->name = $press; $new_press->save(); $music->press_id = $new_press->id; } else { $music->press_id = $press_in_db->id; } // 主办单位 $organizer = mb_convert_encoding($arr[5], 'UTF-8', 'GB2312'); $organizer_in_db = Organizer::where('name', $organizer)->first(); // 如果这个主办机构不存在,则先创建 if (empty($organizer_in_db)) { $new_organizer = new Organizer(); $new_organizer->name = $organizer; $new_organizer->save(); $music->organizer_id = $new_organizer->id; } else { $music->organizer_id = $organizer_in_db->id; } // 操作人 $music->operator = $request->user()->id; // 评论内容 $note_content = mb_convert_encoding($arr[6], 'UTF-8', 'GB2312'); if (!empty($note_content)) { $music->note_content = $note_content; $music->note_operator = $request->user()->id; } $music->filename = mb_convert_encoding($arr[7], 'UTF-8', 'GB2312'); $result[] = $music->save(); } if ($i == 0 || $i == 1 || in_array(false, $result)) { $data['status'] = false; $data['errMsg'] = '表格中没有有效数据'; } else { $data['status'] = true; } return $data; }