laravel 文件上传错误在字符串上调用成员函数getClientOriginalExtension()

j8ag8udp  于 2023-10-22  发布在  其他
关注(0)|答案(3)|浏览(134)

在字符串上调用成员函数getClientOriginalExtension(),当我运行代码时出现此错误

public function store(Request $request){
    $file_ex=$request -> photo -> getClientOriginalExtension();

    $file_name = $file_ex.time();

    $path ='/images/users';
    
    $request -> photo ->move($path, $file_name);

那里的问题
文件上传,找出为什么这不工作

hmae6n7t

hmae6n7t1#

拜托,这样试试,

$file = $request->file('photo');
    $file_ex = $file->getClientOriginalExtension();
    $filename = time().rand(1,99).'.'.$file_ex;
    $path ='images/users';

    $file->move(public_path($path),$filename);
voase2hg

voase2hg2#

首先运行此命令以生成符号链接

php artisan storage:link

然后在控制器功能中

$fileTemp = $request->file('file');
if($fileTemp->isValid()){
  $fileExtension = $fileTemp->getClientOriginalExtension();
  $fileName = Str::random(4). '.'. $fileExtension;
  $path = $fileTemp->storeAs(
    'public/documents', $fileName
  );
}

上面的代码将保存您的文件在storage/app/public/documents位置,并使用符号链接,我们可以访问此文件在这里public/storage/documents
read file-uploads full docs in laravel official docs

zzwlnbp8

zzwlnbp83#

好吧,这就是答案,或者说我是如何解决这个问题的。
首先,要确保三件事:
1.确保您的表单可以处理文件。
enctype="multipart/form-data"中,将其放在form #标签上,如下所示:

<form action="{{url('store')}}" method="POST" enctype="multipart/form-data">

1.确保控制器中的功能正常工作,例如

$file = $request->photo;
$file_ex =$file->getClientOriginalExtension();
$filename = time().rand(1,99).'.'.$file_ex;
$path ='images/users';
$file->move(public_path($path),$filename);

好吧,这个可以。
1.处理我们的文件系统
转到config/filesystems.php
向下滚动,直到找到 'disks' => [
在磁盘中,您将找到'local','public'和's3'复制public并将其粘贴到'public'侧并进行一些更改,如:
首先,我们将看到
公众:

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

1.更改根目录,如'root' => base_path().'/public/images/users',,或者您可以放置您想要的路径。
2:更改URL,如'url' => env('APP_URL').'/public',,或者您可以指定您想要的URL。 代码为:

'users' => [
    'driver' => 'local',
    'root' => base_path().'/public/images/users',
    'url' => env('APP_URL').'/public',
    'visibility' => 'public',
    'throw' => false,
],

感谢您的帮助,如果有任何问题,请提出。

相关问题