首页 > 解决方案 > 如何在 laravel 中使用碳设置上传文件的名称而不是随机数

问题描述

当我上传图像时,它设置为随机数,例如 //15215653352.png。但是相反,我的图像必须是精确的,这意味着我有一个文件夹,其中包含有组织的图片集(digital_1.png,digital_2.png,digital_3.png...)

##图像的文件夹是公开的,称为 imagg##

在 productFactory 我使用这个: 'image' => 'digital_'.$this->faker->unique()->numberBetween(1,28).'.png',

要添加图片,我有以下代码:

$imageName = Carbon::now()->timestamp.'.'. $this->image->extension();
        $this->image->storeAs('imagg',$imageName,'public');
        $product->image = $imageName;

items-component.blade.php:

  @foreach ($products as $product)
        <!-- grid item #1 -->
        <a href="{{route('product.details',$product->slug)}}">
        <div id="TEST" class="activities-grid-item bla" style=" background-image: url({{asset('imagg')}}/{{$product->image}}"  >

          <h1 class="activities-h1">
.
.
.
</a>
$endforeach

文件系统.php:

'root' => storage_path('app'),

因此,因此无法使用这些随机数显示图像,但必须将它们命名为 suc has digital_x.png (而 x 是从 1 到 28 的变量,并且存在于 imagg 文件夹中)。

标签: phpdatabaselaravel

解决方案


这应该有效。

 try {
    $dir = 'folder/to_the_images/'; // path to the images
    if (is_dir($dir)) {
        $images = glob($dir . '{*.jpg, *.JPG, *.jpeg}');
        $imageName = 'digital_' . count($images) + 1 . '.' . $this->image->extension();
        $this->image->storeAs('imagg', $imageName, 'public');
        $product->image = $imageName;
    }
} catch (\Exception $exception) {
    die('saving images failed ' . $exception->getMessage());
}

推荐阅读