【问题标题】:Laravel Upload Image and Generate Random ID as nameLaravel 上传图片并生成随机 ID 作为名称
【发布时间】:2018-07-04 14:24:28
【问题描述】:

为我想在 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);

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

谢谢

【问题讨论】:

    标签: laravel laravel-5


    【解决方案1】:

    试试这个:

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

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

    【讨论】:

    • 我现在从“icon-icons.com_68891.png”中得到结果“012320180639085a66ca7ca54d56_icon-icons.com_68891.png”,但是图像没有上传,我在我的服务器上找不到它,为什么?
    • 您是否在您的&lt;form&gt; 中添加了file =&gt; true?还可以通过以下方式在 php.ini 中启用文件上传:file_uploads = On 除此之外,PHP 的文件上传限制为 2 MB,因此即使启用文件上传,也必须增加 php.ini 中的上传限制。跨度>
    • 你是什么意思?这是我第一次听到这个
    • &lt;form&gt; 应该是:{{!! Form::open(['route' =&gt; 'your-route-name', 'class' =&gt; 'if-any', 'files' =&gt; true]) !!}}
    • 在 Laravel 5 中?我的脚本中没有这样的
    【解决方案2】:

    使用uniqid()

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

    【讨论】:

      【解决方案3】:

      在这里做同样的事情:

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

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

      【讨论】:

      • 但我的“
        " 中有 2 张图片。我不能把它放在我的控制器后面吗?
      【解决方案4】:

      Laravel 有一个内置的方法,使用他们的 File 门面。

      来自 laravel 文档:

          $path = $request->file('avatar')->store('avatars');
      
          return $path;
      

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

      【讨论】:

      • 假设我有两个文件夹。文件名在每个文件夹或两个文件夹中是唯一的吗?
      猜你喜欢
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-16
      • 1970-01-01
      相关资源
      最近更新 更多