【问题标题】:renaming a file before uploading to digital ocean spaces using laravel在使用 laravel 上传到数字海洋空间之前重命名文件
【发布时间】:2018-03-14 08:45:10
【问题描述】:

要上传我使用的文件

Storage::disk('spaces')->putFile('uploads', $request->file, 'public');

文件已成功保存在数字海洋空间中。但我想将其重命名为 user_1_some_random_string.jpg 之类的名称。然后保存。

我该怎么做?

【问题讨论】:

  • 你找到解决办法了吗?
  • 我会尽快通知你.. 还没试过。我在外面

标签: laravel file-upload flysystem laravel-storage


【解决方案1】:

move 方法可用于重命名移动现有文件到新位置: Storage::move('hodor/oldfile-name.jpg', 'hodor/newfile-name.jpg');

还有: 如果您不希望文件名自动分配给您存储的文件,您可以使用 storeAs 方法,该方法接收路径、文件名和(可选)磁盘作为其参数:

$path = $request->file('avatar')->storeAs(
    'avatars', $request->user()->id
);

更多:https://laravel.com/docs/5.6/filesystem

【讨论】:

    【解决方案2】:

    尝试使用 rand()

    $ext  = $request->file('file')->getClientOriginalExtension();
    $name = rand(11111,99999).'.'.$ext;
    Storage::disk('spaces')->putFile('uploads', $name, 'public');
    

    【讨论】:

      【解决方案3】:

      这已经很老了,但我为仍在寻找的人找到了答案。

      据我所知,你需要使用 putFileAs 方法

      1. 第一个参数是存储桶/位置。我对此进行了测试,如果您使用“uploads/testz”,它会创建一个新文件夹,它会在空格的上传文件夹中创建“testz”。

      2. 第二个参数是请求文件对象,在我的例子中是 $request->file('file')

      3. 第三个参数是您想要存储文件的文件名。我测试过,如果你 'testz/' 它将创建与参数 1 中相同的文件夹,这向我表明该方法连接了参数 1 和 3。 所以我的控制器中完整的 sn-p 是

         public function create(Request $request){ Storage::disk('spaces')->putFileAs('uploads/testz', $request->file('file'), 'mychosenfilename.mydesiredextension');
         return redirect()->back();}
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-26
        • 1970-01-01
        • 2019-03-12
        • 1970-01-01
        • 2019-01-16
        • 1970-01-01
        • 1970-01-01
        • 2016-09-21
        相关资源
        最近更新 更多