Как загрузить аудио с файлом в Laravel? - PullRequest
0 голосов
/ 11 марта 2019

создание API для загрузки мультифайла с аудио, все работает, но аудио файл не может быть загружен и выгрузка с помощью dd ($ request) -> все, тогда это работает, но при загрузке с любым условием он дает нулевое значение для каждого clientoriginalName,расширение, как это исправить ...

<?php

namespace App\Http\Controllers\Api;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Storage;
use App\File;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\Auth;


class FileController extends Controller
{
      public function store(Request $request)
    {
        $this->validate($request, [
            'title' => 'required',
            'description' => 'nullable',
            'file' => 'required|file|mimes:' . File::getAllExtensions() . '|max:' . File::getMaxSize(),
            'Fileaudio' =>'nullable|mimes:audio/mpeg,mpga,mp3,wav,aac'
        ]);
////////////      All files       //////////////////
   $file = new File();
  $title = $request->title;
  $uploaded_file = $request->file('file');
  $filename = $uploaded_file->getClientOriginalName();
  $original_ext = $uploaded_file->getClientOriginalExtension();
  $type = $file->getType($original_ext);
  $filepath = $uploaded_file->storeAs('public/upload/files/',$filename);
  $files = URL::asset('storage/upload/files/' . $filename);
  $description = $request->description;
  $user_id = Auth::user()->id;
/////////// Audio at null    /////////////////
     $Fileaudio = $request->file('audio');
     $audioname = $Fileaudio->getClientOriginalName();
     $audiopath =$Fileaudio->storeAs('public/upload/files/audio/', $audioname);

  //return $audiopath;
   dd($request->all());

 }

}

и я отправляю запрос почтальону ...

Ответы [ 2 ]

1 голос
/ 11 марта 2019

создайте папку 'upload/files' внутри хранилища / app / public и /upload/files/audio

, затем запустите команду: php artisan storage: ссылка

эта команда будетсвяжите вашу папку хранения с общей папкой

обновите ваш код:

namespace App\Http\Controllers\Api;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Storage;
use App\File;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;

public function store(Request $request)
    {
        // validation
        $this->validate($request, [
            'title' => 'required',
            'description' => 'nullable',
            'file' => 'required|file|mimes:jpeg,jpg,png,gif|max:2048',
            'audio' =>'nullable|file|mimes:audio/mpeg,mpga,mp3,wav,aac'
        ]); 

         // code for upload 'file'

          if($request->hasFile('file')){
            $uniqueid=uniqid();
            $original_name=$request->file('file')->getClientOriginalName();
            $size=$request->file('file')->getSize();
            $extension=$request->file('file')->getClientOriginalExtension();
            $name=Carbon::now()->format('Ymd').'_'.$uniqueid.'.'.$extension;
            $imagepath=url('/storage/uploads/files/'.$name);
            $path=$request->file('file')->storeAs('public/uploads/files/',$name);  
           }


        // code for upload 'audio'
        // handle multiple files 
       if(is_array($request->file('audio')))
        {
         $audios=array();
         foreach($request->file('audio') as $file) {
            $uniqueid=uniqid();
            $original_name=$file->getClientOriginalName();
            $size=$file->getSize();
            $extension=$file->getClientOriginalExtension();
            $filename=Carbon::now()->format('Ymd').'_'.$uniqueid.'.'.$extension;
            $audiopath=url('/storage/upload/files/audio/'.$filename);
            $path=$file->storeAs('/upload/files/audio',$filename);
            array_push($audios,$audiopath);
         }
         $all_audios=implode(",",$audios);
     }else{ 
         // handle single file 
         if($request->hasFile('audio')){
         $uniqueid=uniqid();
         $original_name=$request->file('audio')->getClientOriginalName();
         $size=$request->file('audio')->getSize();
         $extension=$request->file('audio')->getClientOriginalExtension();
         $filename=Carbon::now()->format('Ymd').'_'.$uniqueid.'.'.$extension;
         $audiopath=url('/storage/upload/files/audio/'.$filename);
         $path=$file->storeAs('public/upload/files/audio/',$filename);
         $all_audios=$audiopath;
        }
    }

}

в вашем запросе почтальона:

add key : "file"  for image file , 
          "audio" for audio file 
0 голосов
/ 11 марта 2019

Вы можете использовать эти предложения для загрузки любой составной части

$file = $request->file;
$filename = time() . '.' . $file->getClientOriginalExtension();
$file->move('your-path', $filename);

и, если вам нужно загрузить несколько аудио или изображений, убедитесь, что ваш ключ на почтальоне написан так:

images[] 
or
audios[]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...