Laravel存储在localmachine之外的文件夹中,如'C:/ uploads'

时间:2017-12-04 09:05:49

标签: php laravel filesystems storage file-system-storage

我想将Laravel项目之外的文件夹保存到本地计算机上的文件夹,例如“C:/ uploads”。当本地计算机上安装的项目保存在“C:/ uploads”文件夹中,但当项目在服务器上联机安装时,请不要保存在“C:/ uploads”中。

在filesystems.php中,我把它作为:

'local' => [
     'driver' => 'local',
      //'root' => storage_path('app/public'),
      //'root' => public_path('uploads'),
      'root'=>'C:\uploads',
 ],

'public' => [
    'driver' => 'local',
     'root' => storage_path('app/public'),
     'visibility' => 'public',
],

在HomeController.php函数中:

$files = Input::file('images');
$file_count = count($files);
$uploadcount = 0;        
foreach($files as $file) {
  //$destinationPath = 'uploads';
  $filename = time() .'-'.$file->getClientOriginalName();
  //$file->move($destinationPath, $filename);
  Storage::disk('local')->put($filename, File::get($file));
  $image=new Image();
  $image->sparepart_id = $id;
  $image->Filename=$filename;
  $image->save();
  $uploadcount ++;

}

1 个答案:

答案 0 :(得分:0)

您可以使用Laravel的environment变量来实现此目的。

在.env文件中(示例1)

FILESYSTEM_DRIVER=name_of_your_disk

或定义应用程序环境(示例2)

APP_ENV=production

然后相应地为本地env和服务器env更改这些值,并在代码中使用它们来检查正在使用的env。

在您的家庭控制器中,您可以简单地使用没有磁盘调用的存储外观来使用前面1中定义的默认磁盘。或者您可以检查APP_ENV并根据它保存或不保存到所需的磁盘。

if(env('APP_ENV') !== 'production')
{
    Storage::disk('local')->put($filename, File::get($file))
}