【问题标题】:Upload image and extract filename instead of file path上传图像并提取文件名而不是文件路径
【发布时间】:2019-01-10 13:32:39
【问题描述】:

我正在使用以下代码在“storage/app/public/websites”中上传缩略图

 $path = $request->file('thumbnail')->store('public/websites');

它工作正常并将图像上传到“网站”目录,但问题是它返回实际路径,例如网站/r63mAKN1kil3BIwvwwRevOv93MgWQFme39BwH8ZV.jpeg

我只想保存图像名称,例如r63mAKN1kil3BIwvwwRevOv93MgWQFme39BwH8ZV.jpeg 在数据库表中。

默认情况下,Laravel 会为图像名称生成唯一 ID。有没有办法只返回文件名而不是路径?

【问题讨论】:

    标签: laravel-5.6


    【解决方案1】:

    这是哈希名称,所以,首先我认为你需要分开你的步骤。

    $file = $request->file('thumbnail');
    
    $path = $file->store('public/websites');
    

    当你需要添加文件名时你可以使用$file->hashName();

    【讨论】:

    • 谢谢它工作正常。我现在可以访问上传的唯一 ID 文件名...现在我的代码是 $file = $request->file('thumbnail'); $path = $file->store('public/websites'); $thumbnail = $file->hashName();
    【解决方案2】:

    你可以使用basename函数

    http://php.net/manual/en/function.basename.php
    
    $filename = basename($path);
    

    【讨论】:

    • 是否有可用的 Laravel 方法,例如:$extension = $request->photo->extension();这是为了扩展。
    【解决方案3】:

    这就是你需要的

    $extension = $request->image->getClientOriginalExtension();
    $image_name = str_replace(' ', '', trim($request->model) . time() . "." . $extension);
    

    并将图像移动到您想要的文件夹:

      $image_path = $request->image->move(public_path('images'), $image_name);
    

    【讨论】:

      【解决方案4】:
      $info = pathinfo( $url );
      
      $contents = ( new \GuzzleHttp\Client() )->get( $url, [ 'verify' => true ] )->getBody()->getContents();
      $file = str_finish(sys_get_temp_dir(), '/') . $info[ 'basename' ];
      
      \File::put( $file, $contents );
      
      $ext = ( new UploadedFile( $file, $info[ 'basename' ] ) )->guessExtension();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-05
        • 1970-01-01
        • 2021-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多