Переименование файла перед загрузкой в цифровое пространство океана с использованием laravel
Для загрузки файла я использую
Storage::disk('spaces')->putFile('uploads', $request->file, 'public');
Файл успешно сохранен на цифровых океанских просторах. Но я хочу переименовать его в нечто подобное user_1_some_random_string.jpg
, А потом сохрани это.
Как мне это сделать?
2 ответа
move
Метод может использоваться для переименования или перемещения существующего файла в новое место:Storage::move('hodor/oldfile-name.jpg', 'hodor/newfile-name.jpg');
Также: если вы не хотите, чтобы имя файла автоматически присваивалось вашему сохраненному файлу, вы можете использовать метод storeAs, который получает путь, имя файла и (необязательно) диск в качестве аргументов:
$path = $request->file('avatar')->storeAs(
'avatars', $request->user()->id
);
Подробнее: https://laravel.com/docs/5.6/filesystem
Попробуйте использовать rand()
$ext = $request->file('file')->getClientOriginalExtension();
$name = rand(11111,99999).'.'.$ext;
Storage::disk('spaces')->putFile('uploads', $name, 'public');
Это довольно давно, но я нашел ответ для тех, кто все еще ищет.
Вам нужно использовать метод putFileAs, насколько я понимаю
первый параметр - это ведро / местоположение. Я протестировал это, и он создаст новую папку, если вы используете 'uploads / testz', он создал 'testz' в папке загрузок на пробелах.
второй параметр - объект файла запроса, в моем случае $request->file('file')
третий параметр - это имя файла, под которым вы ХОТИТЕ сохранить файл. Я тестировал, и если вы 'testz /
', он создаст ту же папку, что и в параметре 1, который подсказывает мне, что метод concats param 1 и 3. Итак, полный фрагмент в моем контроллере public function create(Request $request){ Storage::disk('spaces')->putFileAs('uploads/testz', $request->file('file'), 'mychosenfilename.mydesiredextension'); return redirect()->back();}