我想在Laravel中上传一个MP3文件,然后获取MP3的持续时间。这是我的代码,但它不起作用:
$music_file = Input::file('audio_path');
$file_music = date('Y-m-d-H-i-s')."-".$music_file->getClientOriginalName();
$path = public_path('assets/music/' . $file_music);
$path = $music_file->getRealPath();
答案 0 :(得分:0)
用于移动MP3
$music_file = Input::file('audio_path');
$file_music = date('Y-m-d-H-i-s')."-".$music_file->getClientOriginalName();
$path = public_path('assets/music/' . $file_music);
$music_file->move($path,$file_music);
答案 1 :(得分:0)
在观察到对此问题的许多疑问之后,我将一步一步地介绍我为该问题找到的解决方案。
为此,我们将使用getid3包,即媒体文件解析器。 此解决方案已在Laravel 6.x上进行了测试,但与Laravel的多个版本兼容。
1-要使用Composer将其安装在Laravel上,请使用控制台类型在项目的根目录下:
$ composer require james-heinrich/getid3
在此示例中,我们将创建一个端点以发送.mp3文件并返回其持续时间。
2-创建发送文件的路径:
Route::post('media', 'FilesController@media');
3-创建一个Controller来获取文件并返回持续时间:
class FilesController extends Controller
{
public function media(Request $request)
{
$file = $request->file('upload');
if(!empty($request->file('upload'))) {
$getID3 = new \getID3;
$ThisFileInfo = $getID3->analyze($file);
$len= @$ThisFileInfo['playtime_string']; // playtime in minutes:seconds, formatted string
return $len;
}
}
4-发送文件:
使用POSTMAN进行测试(很好地检查Laravel中的一切是否正常):
注意:POSTMAN中的上载字段是FILE类型。
使用Curl / PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://localhost/api/media",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => array('upload'=> new CURLFILE('/home/fellipe/Desktop/android-timeless.mp3')),
CURLOPT_HTTPHEADER => array(
"Content-Type: application/x-www-form-urlencoded",
"Accept: application/json"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;