我正在将图像上传到 S3,我希望为每个上传的图像创建一个唯一的名称。
我正在使用干预来制作图像:
$img = Image::make($file->getRealPath());
然后我对图像进行哈希处理:
$name = hash('sha256', $img);
问题是,当我上传同一张图片时,它被赋予了相同的名称。
我该如何解决这个问题?
最佳答案
你应该试着往里面加盐。即使附加日期/时间也应该为您提供一个唯一的名称。 干杯!
附言(编辑):
$data = Image::make($file->getRealPath())->encode('data-url');
$name = hash('sha256', $data . strval(time()));
首先我们以“字符串方式”对数据进行编码,这样我们就可以将时间值连接成一个字符串。
如果您想要额外的“随机性”,请添加用户 cookie、用户名等。
最终解决方案:
$data = implode('', file($file->getRealPath()));
$name = hash('sha256', $data.strval(time()));
关于php - HashMap 像名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24160553/