2016-01-03 8 views
5

ich die folgende Störung erhalte:Datei-Upload zu aws S3 Laravel 5.1

FatalErrorException in FilesystemManager.php line 179: Class 'League\Flysystem\AwsS3v3\AwsS3Adapter' not found

Code:

//Composer.json 

    "require": { 
      "php": ">=5.5.9", 
      "laravel/framework": "5.1.*", 
      "laravel/socialite": "~2.0", 
      "guzzlehttp/guzzle": "~4.0", 
      "predis/predis": "^1.0", 
      "tymon/jwt-auth": "0.5.*", 
      "league/flysystem-aws-s3-v2": "^1.0" 
     }, 
     "require-dev": { 
      "fzaninotto/faker": "~1.4", 
      "mockery/mockery": "0.9.*", 
      "phpunit/phpunit": "~4.0", 
      "phpspec/phpspec": "~2.1" 
     } 

//config/filesystem.php 


    'default' => 's3', 
    'cloud' => 's3', 
    'disks' => [ 

      'local' => [ 
       'driver' => 'local', 
       'root' => storage_path('app'), 
      ], 

      's3' => [ 
       'driver' => 's3', 
       'key' => '***********', 
       'secret' => '**************************************', 
       'region' => '*****', 
       'bucket' => '************', 
      ], 


     ], 

//FileController 

    namespace App\Http\Controllers; 
    use Illuminate\Http\Request; 
    use App\Http\Requests; 
    use Illuminate\Contracts\Filesystem\Filesystem; 
    use App\Http\Controllers\Controller; 
    use JWTAuth; 
    use Tymon\JWTAuth\Exceptions\JWTException; 
    public function postProfilePhoto(Request $request) 
     { 
      $token=JWTAuth::getToken(); 
      $user = JWTAuth::toUser($token); 
      $image = $request->file('image'); 
      //return $image; 
      $id=$user->id; 
      if($image) 
      { 
      $imageFileName = time() . '.' . $image->getClientOriginalExtension(); 
      //return $imageFileName; 
      $s3 = \Storage::disk('s3'); 
     $filePath = '/profilePhotos/'.$id . $imageFileName; 
     $s3->put($filePath, file_get_contents($image), 'public'); 

      try{ 
       ProfilePhoto::create(['userId'=>$id,'imgUrl'=>$filePath]); 

       return json_encode(['message'=>'Done!','Id'=>200,'Response'=>'']); 
      } 
      catch(Exception $e) 
      { 
       return json_encode(['message'=>'Not Allowed!','Id'=>402,'Response'=>'']); 
      } 
      } 
      else 
      { 
      return json_encode(['message'=>'No Pic!','Id'=>404,'Response'=>'']); 
     } 
     } 

Antwort

13

Sie müssen zuerst in der Konsole ausführen:

composer remove league/flysystem-aws-s3-v2 

und dann müssen Sie in der Konsole laufen:

composer require league/flysystem-aws-s3-v3:~1.0 

S3-Dateisystem installieren.

Laravel 5.1+ requires V3 version und nicht V2.

+0

Ich bekomme folgenden Fehler. liga/flysystem-aws-s3-v3: ~ 1.0 erfordern aws/aws-sdk-php3.*@dev -> erfüllbar von aws-sdk-php [3.0.0 3.0.1 ....} –

+0

Es ist möglich, Sie verwenden auch andere alte Pakete, die andere alte Pakete verwenden wollen. Sie müssen dies überprüfen –

+0

Vielen Dank @Marcin. Du hast mich gerettet. Ich muss "guzzlehttp/guzzle": "~ 6.0" von "guzzledhtp/guzzle": "~ 4.0" –