2016-07-19 93 views
-3

我正在讀laravel的文件系統文檔,這對初學者來說還不夠。Laravel S3集成

我通過作曲家安裝s3包:

league/flysystem-aws-s3-v2 ~1.0

現在我有下面的代碼,我在哪裏本地上傳文件,

我如何可以上傳文件到S3和我下面的代碼。

public function setPhoto($file, $saveDB = true) 
    { 
     $stream = Image::make($file->getRealPath()) 
        ->stream('jpg', 80); 
     $stream = $stream->detach(); 
     $photoID = $this->id . '-medium-' . time() . '.jpg'; 
     $photoPath = 'photos/packages/' . $photoID; 
     DataIO::deleteFile($photoPath); 
     $this->photo_url = DataIO::updateStream($photoPath, $stream); 
     $this->photo_path = $photoID; 
     if($saveDB) { 
      $this->save(); 
     } 
    } 

我已經爲s3,祕密密鑰等設置了憑證。 感謝

+2

嗯看來你正在使用'rackspace'適配器,而不是's3'? – cmorrissey

+0

@cmorrissey對不起,這是一個錯誤,我已經更新了這個問題,最初我安裝了s3,對於我從laravel文檔複製的問題。請回答這個問題。謝謝 – Gammer

回答

1

有做,在DOC Here

的指令是否使用Intervention庫?你可以嘗試這樣的:

public function setPhoto($file, $saveDB = true) 
{ 
    $stream = Image::make($file->getRealPath())->stream('jpg', 80); 
    $stream = $stream->detach(); 
    $photoID = $this->id . '-medium-' . time() . '.jpg'; 
    $photoPath = 'photos/packages/' . $photoID; 
    Storage::disk('s3')->put("$photoPath", $stream->__toString(), 'public'); 

    DataIO::deleteFile($photoPath); 
    $this->photo_url = DataIO::updateStream($photoPath, $stream); 
    $this->photo_path = $photoID; 

    if($saveDB) { 
     $this->save(); 
    } 
} 

但要確保你已經正確設置s3配置在config/filesystem.php