

Cloud Storageにアップロードしている画像を削除しようとすると、以下のようなエラーが出て削除ができません。

[code]

    Aws \ S3 \ Exception \ S3Exception
    Error executing "ListObjects" on "myproject.appspot.com" AWS HTTP error: Client error: `GET myproject.appspot.com` resulted in a `400 Bad Request` response: <?xml version='1.0' encoding='UTF-8'?><Error><Code>InvalidArgument</Code><Message>Invalid argument.</Message><Details>In (truncated...) InvalidArgument (client): Invalid argument. - <?xml version='1.0' encoding='UTF-8'?><Error><Code>InvalidArgument</Code><Message>Invalid argument.</Message><Details>Invalid query parameter(s): [encoding-type]</Details></Error>
    
[/code]

現在LaravelのFileSystemを使ってCloud Storageとのやり取りを行なっています。  
以下のコードで画像のアップロードはできています。

[code]

    $fileName = 'article/'.uniqid(mt_rand());
    $disk = Storage::disk('gcp');
    $disk->put($fileName, file_get_contents($image));
    
[/code]

そして削除は以下のように行なっています。

[code]

    Storage::disk('gcp')->delete([$filePath->image]);
    
[/code]

$filePath->imageには
`https://storage.googleapis.com/myproject.appspot.com/article/123456abcd`
といったフルパスが入っています。  
なぜアップロードはできるのに削除ができないのでしょうか？  
Cloud Storage内のデータを削除するには何か設定をしなければいけないのでしょうか？  
どなたか分かる方がいれば教えていただきたいです。よろしくお願いします。


CC BY-SA 4.0
2018-02-22T00:07:52.500
41908
2023-07-15T05:06:00.807
2020-01-24T04:14:02.263
3060
5210
question
php laravel google-cloud-storage
Cloud Storage内のファイルが削除できない


the prefix you specified includes "https://...."  
It should just include the object name prefix, not the full URL.

Also, is myproject.appspot.com the name of your bucket? I'm wondering if you
wrote that to indicate the project name.

Also, there is no encoding-type parameter for this request.

The documentation is at <https://cloud.google.com/storage/docs/xml-api/get-
bucket-list>


CC BY-SA 3.0
2018-02-22T00:37:13.767
41909
2018-02-22T00:37:13.767
27494
41908
answer