【问题标题】:How to get the uploaded image name from the store method如何从 store 方法中获取上传的图片名称
【发布时间】:2020-03-10 10:09:20
【问题描述】:

当我通过以下方式在 Laravel 中存储图像时:

$path = $request->file('myImage')->store('public/src/');

它返回完整路径,但我如何只获取它给出的文件名?

这是返回路径的示例:

public/src/ltX4COwEmvxVqX4Lol81qfJZuPTrQO6S2jsicuyp.png

【问题讨论】:

    标签: laravel image upload


    【解决方案1】:

    由于$path 返回已保存文件的完整路径,因此它包含其生成的名称。 你只需要解析这个字符串:

    $extension = explode('/', $path);
    $filename = end($extension)
    

    这会给你ltX4COwEmvxVqX4Lol81qfJZuPTrQO6S2jsicuyp.png

    【讨论】:

      【解决方案2】:

      在这里,你可以试试这个。

          $fileNameWithExt = $request->file('myImage')->getClientOriginalName();
          $fileNameWithExt = str_replace(" ", "_", $fileNameWithExt);
      
          $filename = pathinfo($fileNameWithExt, PATHINFO_FILENAME);
          $filename = preg_replace("/[^a-zA-Z0-9\s]/", "", $filename);
          $filename = urlencode($filename);
      
          $extension = $request->file('myImage')->getClientOriginalExtension();
      
          $fileNameToStore = $filename.'_'.time().'.'.$extension;
      
          $path = $request->file('myImage')->storeAs('public/src/',$fileNameToStore);
          return $fileNameToStore;
      

      您将在 $fileNameToStore 中获得您存储的文件名。 此外,所有空格都将替换为“_”,您将获得带有当前时间的存储文件名,这将帮助您区分两个同名文件。

      【讨论】:

      • "/[^a-zA-Z0-9\s]/" 是什么意思?
      • @IbrahimShendy 这些是定义不同类型字符和字符集的正则表达式。正则表达式的详细解释可以参考here
      【解决方案3】:

      在 Laravel 中,store() 方法动态生成名称.. 所以你无法从 store() 方法中获取它。

      但是你可以使用storeAs() 方法。基本上store() 方法正在调用storeAs() 方法。所以:

      $path = $request->file('myImage')->store('public/src');
      

      Laravel 正在调用 ->storeAs('public/src', $request->file('myImage')->hashName()); .. 你看到 hashName() 方法了吗?这就是产生名称的原因。

      所以您可以先致电hashName() 并在存储发生之前知道您的姓名.. 这是一个示例:

      $uploadFile = $request->file('myImage');
      $file_name = $uploadFile->hashName();
      $path = $uploadFile->storeAs('public/src', $file_name);
      

      现在你有了$file_name$path

      见:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-02
        • 2015-10-22
        • 1970-01-01
        • 1970-01-01
        • 2012-01-04
        • 1970-01-01
        相关资源
        最近更新 更多