изображение не загружено в Public / Storage / images в laravel - PullRequest
0 голосов
/ 14 апреля 2020

Я хочу загрузить изображение и сохранить в папке. Из моего кода я получаю имя изображения, но не сохраняю его в папке. Путь для сохранения изображения: - /public/storage/images. Что я могу сделать? Контроллер: -

if($req->hasFile('image'))
{
return $req->image->getClientOriginalName();
$path = $req->file('image')->store('/images');
}

Вид: -

<div class="form-group">
<label class="control-label col-sm-2" for="file">Image:</label>
<div class="col-sm-10">          
<input type="file" class="form-control" id="file" placeholder="Choose photo" name="image">
</div>
</div>

Маршрут: -

Route::view('Blog','pages.Blog');
Route::post('Blog','BlogController@Blogsinsertion');

Файловая система: -

'public' => [
'driver' => 'local',
'root' => 'storage/',
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020
public function Blogsinsertion(Request $request)
    {
        //.....


        if ($request->hasFile('image')) {

            $image = $request->file('image');
            $name = time().rand(1, 99999) . '.' . $image->getClientOriginalExtension();
            $Path = public_path('/storage/images');
            $image->move($Path, $name);

            //save name in db

            //yourmodel->image =  $name;


        }

        //........
    }
0 голосов
/ 14 апреля 2020

Я думаю, что ваша проблема вызвана тем, что вы уже return звоните перед вызовом store(), поэтому файл фактически не сохраняется.

Кроме того, Laravel документация содержит инструкции по предложенному способу установки диска publi c, чтобы в папке хранилища было все аккуратно, создавая символическую ссылку в диапазоне от /public/storage до /storage/app/public, но при необходимости вы можете изменить местоположение. как только вы указываете диск publi c в файле конфигурации вашей файловой системы на новый символьный путь, вы можете попробовать следующий код:

if($req->hasFile('image'))
{
    // This line will save and then returns the saved file name
    return $req->file('image')->store('/images','public');
}

Если вы пытаетесь сохранить загруженный файл с то же самое имя вместо хешированного по умолчанию, тогда вы можете использовать метод storeAs() вместо этого, например:

if($req->hasFile('image'))
{
    $uploadedFile = $req->file('image');

    // This line will save with same name and then returns the saved file name
    return $uploadedFile->storeAs('/images', $uploadedFile->getClientOriginalName(),'public');
}
...