首页 > 解决方案 > 如何通过 laravel 中的代码也将文件的扩展名发送到 gcloud 应用存储桶?

问题描述

我通过在 laravel 中的编码将我的图片存储在 gcloud app 存储桶中,它正在工作。

但我想用相同的名称保存它们,因为我用它们的扩展名将它们保存在数据库中,这样我就可以轻松地检索它们。

图像以他们自动创建的名称保存在 GCS 存储桶中,没有扩展名。

这是我的代码:

public function store(Request $request)
{

    if ($request->hasFile('image')) {

        $imageName = time().'.'.$request->image->extension();
        $photo = $request->image->storeAs('ufurnitures-img', $imageName, 'public');
    }

    // Save the data into GCS
    $extension = $request->image->getClientOriginalExtension();

    $storage = new StorageClient([
        'projectId' => 'ufurnitures'
    ]);

    $bucket = $storage->bucket('ufurnitures-img');
    $bucket->upload(
        //fopen($request->image.'.'.$extension, 'r')  //This one is not working
        fopen($request->image, 'r')   //This one is working
    );

    // Save the data into database
    Product::create([
        'name' => $request->name,
        'price' => $request->price,
        'description' => $request->description,
        'image' => $photo
    ]);
    $request->session()->flash('msg','Your product has been added');
    return redirect()->back();

}

标签: laravelgoogle-app-enginegoogle-cloud-platformgoogle-cloud-storagegcloud

解决方案


您可以在上传 blob 时指定选项。

    $options = [
        'name' => '/path/to/file.extension',
    ];
    $bucket->upload(
        //fopen($request->image.'.'.$extension, 'r')  //This one is not working
        fopen($request->image, 'r'),   //This one is working
        $options
    );


推荐阅读