如何上传mp3文件并在laravel 4.2中获取其持续时间

时间:2016-08-04 09:03:21

标签: php laravel-4 laravel-4.2

我想在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();

2 个答案:

答案 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中的一切是否正常):

enter image description here

注意: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;