2016-08-25 6 views
9

В laravel 5.3, если я загружу файл из формы, он будет сохранен в собственном каталоге хранилища. Затем я должен создать symlink для этого пути хранения в общедоступном пути.Как изменить путь хранения в laravel 5.3 для публики?

Я не могу использовать создание символических ссылок в своей системе из-за ограничений. Как я могу загрузить файлы непосредственно на public/uploads вместо storage/app/uploads?

Я попытался установить путь в AppServiceProvider.php, но он не работает.

public function register() 
{ 
    //not working: 
    $this->app->useStoragePath($this->app->basePath() . "/upload"); 

    //also not working: 
    // $this->app->bind('path.storage', function() { 
    // return $this->app->basePath() . '/upload'; 
    // }); 

} 

«не работает» Я имею в виду, что он по-прежнему загружается в каталог хранения по умолчанию. Я также очистил кеш.

Вот часть загрузки (используется в контроллере):

 $request->image->storeAs("uploads", "uploaded_image.jpg"); 

Спасибо за любые подсказки. :)

ответ

17

В Laravel 5 вы должны сделать это в config/filesystems.php. Вы можете добавить новый диск так:

'disks' => [ 

    'uploads' => [ 
      'driver' => 'local', 
      'root' => public_path(), // previously storage_path(); 
    ], 

] 

, а затем выполните следующие действия, чтобы использовать его:

Storage::disk('uploads')->put('filename', $file_content); 
+1

спасибо! :) оно работает. В моем примере я загружал изображение из формы. Я также могу сделать следующее для использования моего диска «uploads»: $ request-> image-> storeAs ($ upload_dir, «uploaded_image.jpg», «uploads»); – MilMike

+0

@George H, Кажется, вы мастер laravel. Мне нужна твоя помощь. Смотрите здесь: http://stackoverflow.com/questions/41047583/how-to-add-dynamic-dropdown-list-column-on-laravel-5-3-регистрация –