0

我希望上传的文件直接位于public/uploads文件夹中,例如public/uploads/my_file.jpeg. 为什么我的代码将其上传到public/uploads/file_name/file.jpeg

这里是filesystems.php

    'public_uploads' => [
        'driver' => 'local',
        'root'   => public_path() . '/uploads',
    ],

这是控制器。

function upload_template(Request $request)
{


    $filee = $request->file('file_upload');
    $file_ext = $filee->extension();

    $file_name = $model->id . "." . $file_ext;

    Storage::disk('public_uploads')->put($file_name, $filee);

}
4

3 回答 3

4

发生这种情况是因为您将要存储的目录指定为文件名。,file_name应该是目录名称,例如images.

参考这一行:

Storage::disk('public_uploads')->put($file_name, $filee);

因此,您可以将其更改为:

Storage::disk('public_uploads')->put('images', $filee);
// output : /images/234234234.jpg

您需要在第二个参数而不是文件对象中提供文件内容,试试这个:

Storage::disk('public_uploads')->put($file_name, file_get_contents($filee));

要指定文件名,您可以使用move()方法而不是storage()

if($request->hasFile('file_upload'))
{
  $filee = $request->file_upload;
  $name = "my_file"; // name here
  $fileName = $name . $filee->getClientOriginalName();
  $filee->move('public_uploads',$fileName);
}
于 2020-06-26T10:43:59.367 回答
0

我刚刚发现它Laravel 5.3 Storage::put 创建了一个带有文件名的目录

需要在第二个参数而不是文件对象中提供文件内容。Tt 应该是Storage::disk('public_uploads')->put($file_name, file_get_contents($filee));

于 2020-06-27T03:08:23.927 回答
0
//this is the best way you create a trait with 2 functions saveImage and 
//deleteImage

 public function saveImage($name,$folder){
$extention=$name->getClientOriginalExtension();
$filename=time().'.'.$extention;
$path=public_path().'/'.$folder;
$name->move($path,$filename);
return $filename;

}

public function deleteImage($name,$folder){
$image_path=public_path().'/'.$folder.'/'.$name;
unlink($image_path);

}

  function upload_template(Request $request){
    $file = $request->file_upload;//$request->your input name
     $img=$this->saveImage($file,'uploads');

     //you can use $img for storing the image in database for example 
      User::create([
        'avatar'=>$img
       ])
 }
//don't forget to invoke your trait
于 2020-06-26T10:56:48.163 回答