2017-07-04 31 views
1

すでにs3にあるフォルダをコピーしようとしていて、laravel 5.4でS3に別の名前で保存しようとしています。これまでに私が見つけたのは、フォルダではなくImageをコピーできることです。私は、例えば:Aws s3はlaravelのフォルダをコピーして複製します

$disk->copy("admin/form/$old_form","admin/form/$new_form"); 

のようにフォルダをコピーしようとしました。しかし、それはそのようには機能しません。それは私に誤りを与える。ループを適用して各フォルダ項目を個別に取得する必要がありますか? Like:

$images = $disk->allFiles('admin/form/$id'); 

また、laravelまたはs3 apiで利用できる回避策はありますか?

助けてください、その私を狂って運転してください。

ありがとうございます。

+0

真剣に誰もいないですか? –

+0

まず、S3 doesntのは、フォルダの概念を持っているので、コピー/して文句を言わないフォルダの名前を変更、削除が作業を行うことをおかしい、https://github.com/thephpleague/flysystem-aws-s3-v3/issues/128働きます。 laravelのためにフォルダをコピーすることはできませんが、古い&新しいコピーを作成するか、エラーが発生します。私はローカルではうまくいったが、ha3はまだs3でテストした – ctf0

答えて

3

私はこの同じことをやっている途中です。私がこれまで読んだことに基づいて、Laravelを使ってディレクトリ自体をコピーすることは可能ではないようです。私が今まで見てきた提案は、それぞれの画像を見て、コピーすることを提案していますが、私はスピードに満足していません(1日に数回、多くの画像でこれをやっています)。私はので、私はより簡単にPHP嵐の中のメソッドにアクセスすることができ、このように直接ファイルシステムを使用してい

注意。 $s3 = \Storage::disk('s3');は私の最初の2行と同じことを達成するでしょう。より迅速に動作するものがあれば、この回答を更新します。

$filesystem = new FilesystemManager(app()); 
$s3 = $filesystem->disk('s3'); 
$images = $s3->allFiles('old-folder'); 

$s3->deleteDirectory('new_folder'); // If the file already exists, it will throw an exception. In my case I'm deleting the entire folder to simplify things. 
foreach($images as $image) 
{ 
    $new_loc = str_replace('old-folder', 'new-folder', $image); 
    $s3->copy($image, $new_loc); 
} 
+0

はい。これも私がそれを達成した方法です。しかし、それは多くの時間がかかります。私は直接フォルダをコピーする別の方法があったと思います。 –

関連する問題