Невозможно загрузить изображение в S3 Bucket - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь загрузить изображение в корзину Amazon s3, используя vue js и laravel. Но когда я загружаю его, появляется следующее исключение: -

enter image description here

вот что я написал в моем контроллере для загрузки файла.

public function addProperty(Request $request)
{

    $property = new Property;
    $property->title = request('title');
    $property->property_type =  request('type');
    $property->property_sub_type = request('subtype');
    $property->address = request('address');
    $property->property_index = 400;

    #$property->save();

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


        $fileNameWithExtension = $request->file('image')- >getClientOriginalName();
        $fileName = pathinfo($fileNameWithExtension, PATHINFO_FILENAME);
        $extension = $request->file('image')->getClientOriginalExtension();

        $fileNameStore =$fileName.'_'.time().'_'.'.'.$extension;
        $disk = Storage::disk('s3');
        $disk->put($fileNameStore, fopen($request->file('image'), 'r+'), 'public');

        $profilePicImageUri = Storage::disk('s3')->url($fileNameStore);
        dd($profilePicImageUri);
        return $profilePicImageUri;

    }

}

вот что я сделал в Vue

onSubmit(){
            let self = this;
            let data = new FormData();
            data.append('image',this.file);
            data.append('title',this.propertyTitle);
            data.append('type',this.type);
            data.append('subtype',this.subtype);
            data.append('lat',this.lat);
            data.append('long',this.long);
            data.append('address',this.address);

            let config = {
                    headers:{
                        'Content-Type' : 'multipart/form-data'
                    }
            }
            axios.post(baseUrl + "api/admin/addproperty",data,config)
                .then(function (response) {
                    console.log(response);
            }).catch(function (error) {
                {
                    console.log(error);
                }
            })

        },

Я уже настроил свою конфигурацию aws в файле env. Вот моя конфигурация

AWS_ACCESS_KEY_ID=XXXX
AWS_SECRET_ACCESS_KEY=XXX
AWS_DEFAULT_REGION=eu-central-1
AWS_BUCKET= php-laravel-upload
AWS_URL = https://php-laravel-upload.s3.eu-central-1.amazonaws.com

Я не понимаю, что я делаю неправильно. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 17 октября 2019

попробуй вот так

 if ($request->hasFile('image')) {
        $fileInstance = $request->file('image');

        $fileNameStore = $fileInstance->getClientOriginalName().'_'.time().'_.'.$fileInstance->getClientOriginalExtension();
        Storage::disk('s3')->put($fileNameStore, $fileInstance, 'public');

        $profilePicImageUri = Storage::disk('s3')->url($fileNameStore);
      //  dd($profilePicImageUri);
        return $profilePicImageUri;

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...