2016-12-13 137 views
1

我想知道我是否可以得到一些幫助。使用Flysystem從PHP下載文件

在我的項目中使用Flysystem包。

目前,即時通訊使用下面的代碼

$awss3 = new Flysystem(new AwsS3Adapter($client_details, 'bucket-name')); 
$stream = fopen(public_path() . '/upload/' . $filename . '.gz', 'r+'); 
$awss3->writeStream($filename . '.gz', $stream); 

這完美的作品將文件上載到S3。

但我無法弄清楚如何反向運行並下載文件。

任何幫助將不勝感激。

乾杯,

回答

0

可以使用flysystem readStream功能

$stream = $filesystem->readStream('something/is/here.ext'); 

然後,你可以使用write流直接寫入到磁盤

$filesystem->writeStream('backups/'.strftime('%G-%m-%d').'.backup', $stream) 

或者你也可以直接使用下載文件以下代碼片段

  //Get File Extension 
      $file_extension = ; 

      //Get File Size 
      $file_size = ; 

      // Set the headers, prevent caching. 
      header("Pragma: public"); 
      header("Expires: -1"); 
      header("Cache-Control: public, must-revalidate, post-check=0, pre-check=0"); 

      header("Content-Transfer-Encoding: binary"); 
      header("Content-Type:application/" . $file_extension); 
      header('Content-Disposition: attachment; filename="' . $file_name . '"'); 

      header ("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 

      header('Content-Length: ' . $file_size); 
      header('Accept-Ranges: bytes'); 
      fpassthru($stream);