Laravel上传图片并生成随机ID作为名称

时间:2018-01-25 10:55:08

标签: laravel laravel-5

为我想在Laravel 5中上传的每张图片生成和随机ID号码的最佳方法是什么?

我的上传:

<input type="file" id="mypicture" name="mypicture">

控制器:

public function MyPicture(Request $request){
  $user = Auth::user();
  $user->mypicture= $request->mypicture;
  $user->save();
  return redirect()->back();
}

这就是我总是做其他事情的方式:

->uniqueid = 'VA'.str_random(28);

如何将其添加到我的Controller中以获取图像名称? 我怎样才能使用字母字符而不是数字?或者我必须更改我的数据库表。

由于

4 个答案:

答案 0 :(得分:2)

试试这个:

public function MyPicture(Request $request){
  $user = Auth::user();
  $user->mypicture = date('mdYHis') . uniqid() . $request->mypicture;
  $user->save();
  return redirect()->back();
}

您可以使用日期(Y-m-d H:i:s)和uniqid()为每个文件生成唯一名称。

答案 1 :(得分:0)

使用uniqid()

if (Input::hasFile('mypicture')) {
     $mypicture = Input::file('mypicture');
     $user->mypicture= uniqid().$mypicture->getClientOriginalName();
}

答案 2 :(得分:0)

在这里做同样的事情:

$user = Auth::user();
$user->mypicture = $request->mypicture;
$user->filename = str_random(28);
$user->save();

$request->mypicture->storeAs('images', $user->filename);

如果您只想使用字母,请使用the existing solutions之一。

答案 3 :(得分:0)

Laravel使用其文件外观为此构建了一个内置方法。

来自laravel docs:

setsockopt(zmq.SNDHWM, 10)
setsockopt(zmq.RCVHWM, 10)

默认情况下,store方法将生成一个唯一ID作为文件名。 store方法将返回文件的路径,以便您可以在数据库中存储路径,包括生成的文件名。