【问题标题】:Laravel generate a unique ID using Storage::putLaravel 使用 Storage::put 生成唯一 ID
【发布时间】:2022-05-14 04:56:01
【问题描述】:

我在存储上传的文件时使用 Laravel Storage::putFile(),我喜欢它的自动唯一文件名的便利性以及它如何处理文件扩展名。

现在我想从远程服务器 (file_get_contents($url)) 获取文件并将其存储起来,就像我为上传的文件所做的那样,但我在文档中找不到任何相同的方法。

https://laravel.com/docs/5.5/filesystem#storing-files 方法中的put 中,您必须指定文件名。

【问题讨论】:

  • 你可以随时使用md5($url) 为该 URL 生成文件名
  • 我也很惊讶在从内容创建文件名时必须手动生成文件名。

标签: laravel laravel-5


【解决方案1】:
$filename = uniqid(). '.' .File::extension($file->getClientOriginalName());
//uniqid() is php function to generate uniqid but you can use time() etc.

$path = "Files/Images/"
Storage::disk('local')->put($path.$filename,file_get_contents($file));

【讨论】:

  • 终于file_get_contents为我工作了,谢谢
【解决方案2】:

【讨论】:

  • 我没有上传文件。这是从另一台服务器下载的
【解决方案3】:

要确保文件名是唯一的并获取文件 url 的扩展名,您可以这样做:

$ext = pathinfo($url, PATHINFO_EXTENSION);    
$filename = bcrypt($url).time().'.'.$ext;

【讨论】:

  • bcrypt 也使用 / 所以这在 Linux 环境中是一个非常糟糕的主意
猜你喜欢
  • 1970-01-01
  • 2023-03-15
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多