0

上传我使用的文件

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

该文件已成功保存在数字海洋空间中。但我想把它重命名为这样的东西user_1_some_random_string.jpg。然后保存它。

我该怎么做?

4

3 回答 3

0

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

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

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

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

  3. 第三个参数是您希望将文件存储为的文件名。我测试过,如果你 'testz/<yourspecialfilename.extension>' 它将创建与参数 1 中相同的文件夹,这向我表明该方法连接了参数 1 和 3。所以我的控制器中的完整片段是

     public function create(Request $request){ Storage::disk('spaces')->putFileAs('uploads/testz', $request->file('file'), 'mychosenfilename.mydesiredextension');
     return redirect()->back();}
    
于 2020-11-20T08:17:52.143 回答
0

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

于 2018-03-14T08:46:39.543 回答
0

尝试使用 rand()

$ext  = $request->file('file')->getClientOriginalExtension();
$name = rand(11111,99999).'.'.$ext;
Storage::disk('spaces')->putFile('uploads', $name, 'public');
于 2018-03-19T09:16:33.920 回答