Как НЕ изменить расширение файла при загрузке? - PullRequest
0 голосов
/ 20 февраля 2020

В моем Laravel проекте мне нужно загрузить mp3-файлы, однако Laravel, используя mpga в качестве типа mime для проверки mp3 типа файлов, я обнаружил, что в этом ответе .

$results = Validator::make($request->all(), [
            "song" => "required|file|mimes:mpga|max:8192",
        ]);

Я согласен с этим, но моя проблема в том, что файл хранится с расширением mpga, я знаю причину этого странного действия из этого ответа .

Как сохранить файл

// Upload the song
$filePath = $request->song->store("public/songs");

Но я хочу сохранить файл с расширением mp3.

1 Ответ

0 голосов
/ 20 февраля 2020

Не видя ваш код, лучше всего предложить метод putFileAs () из класса Storage.

Этот метод позволяет указать имя файла, когда хранение вашего файла:

use Illuminate\Http\File;
use Illuminate\Support\Facades\Storage;

// Manually specify a file name:
Storage::putFileAs(
    'folder',
    new File('/path/to/uploaded-music.mp3'), 
    'stored-song-name.mp3'
);

См. Laravel do c: https://laravel.com/docs/5.8/filesystem#storing -файлы


Редактировать: Если вы хотите сохранить Laravel случайное именование файла, как и метод putFile(), вы можете сгенерировать случайную строку и добавить свое расширение:

use Illuminate\Http\File;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;

// Manually specify a file name:
Storage::putFileAs(
    'folder',
    new File('/path/to/uploaded-music.mp3'), 
    Str::random(40) . '.mp3'
);

Если вы посмотрите на Laravel исходный код , Вот как putFile() делает это для генерации случайного имени файла.

...