0

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

2 回答 2

0

在观察了对这个问题的许多疑问之后,我将一步一步地离开这里,给出我为这个问题找到的解决方案。

为此,我们将使用 getid3 包,一个媒体文件解析器。该解决方案在 Laravel 6.x 上进行了测试,但它与多个版本的 Laravel 兼容。

1 - 使用 Composer 在 Laravel 上安装它,在项目的根目录使用控制台类型:

$ composer require james-heinrich/getid3

在本例中,我们将创建一个端点来发送一个 .mp3 文件并返回其持续时间。

2 - 创建一个路由来发送文件:

Route::post('media', 'FilesController@media');

3 - 创建一个控制器来获取文件并返回持续时间:

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 类型。

使用卷曲/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;
于 2020-04-30T16:13:06.907 回答
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);
于 2016-08-05T10:43:02.853 回答