Laravel 5.3 Storage :: put создает каталог с именем файла

Я использую функцию хранения файлов Laravel для сохранения файла:

public function dataPost(Request $request) {

$fileInForm = 'doc';

if ($request->hasFile($fileInForm)) {

$file = $request->file($fileInForm);
if ($file->isValid()) {

// Filename is hashed filename + part of timestamp
$hashedName = hash_file('md5', $file->path());
$timestamp = microtime() * 1000000;

$newFilename = $hashedName . $timestamp . '.' . $file->getClientOriginalExtension();

Storage::disk('local')->put($newFilename, $file);
}
}
}

Это сохранит файл, но внутри каталога с именем, совпадающим с файлом, например:

storage/app/952d6c009.jpg/952d6c009.jpg

или же

storage/app/234234234.jpg/234234234.jpg

Это ожидается? Есть ли способ просто сохранить файл без отдельного каталога для каждого файла?

Спасибо!

9

Решение

вам нужно предоставить содержимое файла во втором аргументе, а не в объекте файла, попробуйте это:

Storage::disk('local')->put($newFilename, file_get_contents($file));

19

Другие решения

Это произошло потому, что вы указали каталог для хранения в качестве имени файла. newFilename, должно быть именем каталога, таким как ‘images’. Обратитесь к этой строке

Storage::disk('local')->put($newFilename, $file);

Так что вы можете изменить это на

Storage::disk('local')->putFile('images', $file);

Тогда вы получите путь, сохраненный в storage/app/images/234234234.jpg

2

Storage::disk('local')->putFileAs('', $file, $filenewname);
0
По вопросам рекламы [email protected]