【问题标题】:image is not uploaded in Public/Storage/images in laravel图片未上传到 laravel 的 Public/Storage/images 中
【发布时间】:2020-07-26 18:35:44
【问题描述】:

我想上传一张图片并存储在一个文件夹中。从我的代码中,我得到了图像的名称,但没有将其保存在文件夹中。存储图像的路径是:- /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',
],

【问题讨论】:

    标签: laravel filesystems image-upload


    【解决方案1】:
    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;
    
    
            }
    
            //........
        }
    

    【讨论】:

      【解决方案2】:

      我认为您的问题是因为您在 store() 调用之前已经在 returning 中,因此文件实际上并未保存。

      另外,Laravel 的 documentation 有关于设置公共磁盘的建议方法的说明,以便通过在 /public/storage/storage/app/public 之间创建符号链接,存储文件夹中的所有内容都可以整洁,但您可以根据需要更改位置.将文件系统配置文件中的公共磁盘指向新的符号链接路径后,您可以尝试以下代码:

      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');
      }
      

      【讨论】:

      • 我已经使用了您的代码,但仍然没有保存在图像文件夹中。相反,它给了我这样的路径:- images/Desert.jpg
      • @HarshaGandhi 对不起,我误读了您的问题。我提供的代码正在运行,但我认为您的配置文件系统没有指向预期的文件夹,因此它可能保存在 storage/images/Desert.jpg 中。我已经用新代码和指向 laravel 文档的链接编辑了我的答案,其中概述了设置公共磁盘的建议方法,但如果你想遵循该指南,这取决于你
      猜你喜欢
      • 2020-10-06
      • 2016-08-04
      • 2017-09-12
      • 2021-12-10
      • 2016-10-28
      • 2018-08-11
      • 1970-01-01
      • 2016-01-06
      • 1970-01-01
      相关资源
      最近更新 更多