代码之家  ›  专栏  ›  技术社区  ›  Sam Bellerose

Laravel Spark将配置文件图片上传至外部驱动程序

  •  0
  • Sam Bellerose  · 技术社区  · 6 年前

    1 回复  |  直到 6 年前
        1
  •  0
  •   Sam Bellerose    6 年前

    所以我就这么做了

    我在update-profile-photo.js中添加了这些方法

    methods: {
        updateProfilePhoto() {
    
            axios.post('/settings/profile/details/profile-picture', this.gatherFormData())
                .then(
                    () => {
                        console.log('Profile picture updated');
                        Bus.$emit('updateUser');
    
                        self.form.finishProcessing();
                    },
                    (error) => {
                        self.form.setErrors(error.response.data.errors);
                    }
                );
        },
        gatherFormData() {
            const data = new FormData();
    
            data.append('photo', this.$refs.photo.files[0]);
    
            return data;
        }
    }
    

    我的控制器是这样的

    public function updateProfilePicture(Request $request)
    {
        $this->validate($request, [
            'photo' => 'required',
        ]);
    
        // Storing the photo
        //get filename with extension
        $filenamewithextension = $request->file('photo')->getClientOriginalName();
    
        //get filename without extension
        $filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);
    
        //get file extension
        $extension = $request->file('photo')->getClientOriginalExtension();
    
        //filename to store
        $filenametostore = $filename.'_'.time().'.'.$extension;
    
        Storage::disk('s3_users')->put($filenametostore, fopen($request->file('photo'), 'r+'), 'public');
    
        $url = $filenametostore;
    
        $request->user()->forceFill([
            'image_url' => $url
        ])->save();
    
    
        return response()->json(
            array(
                "message" => "Profile picture was updated!",
            )
        );
    
    }