(계속) 컨트롤러에서 s3에 저장된 이미지 삭제(Laravel)
입문
채팅 응용 프로그램에서 1조의 정보 수 상한선을 50건(Laravel)으로 설정한 후속이다.
마지막 내용은 메시지가 50개가 넘는 상황에서 자동으로 오래된 메시지를 삭제하는 코드입니다.삭제할 것은 오래된 메시지 기록 (메시지 테이블의 데이터) 입니다.
영상 송수신 메커니즘
화면은 아래와 같다.
'파일 선택'에서 이미지를 선택하고'보내기'를 누르면 이미지는 컨트롤러를 통해 s3에 저장됩니다.
이미지를 저장하는 s3 링크를 image_path열에 저장합니다.파일 이름 앞에 path를 붙여서 저장합니다.https://バケット名.s3.us-east-2.amazonaws.com/ファイルハッシュ名.jpeg
이런 요령.
그림을 표시할 때blade.php에서 <img>
표시로 호출합니다.
's3의 저장 방법'등 작은 부분은 건너뛰고 썼다.만약 수요가 있다면, 나는 다른 보도를 뒤쫓아 쓰고 싶다.
코드
코드 바로 업로드할게요.이른바 결론이 제일이다.
움직이기 전에 여러 가지 오류가 있었지만 거의 모두 오류여서 쓰지 않았다.
GroupController.php@send$count = $message->where('group_id',$_POST['group_id'])->count();
if ($count > 50) {
$message50 = DB::table('messages')
->where('group_id', $_POST['group_id'])
->orderBy('id','desc')
->take(50);
$deleteid = $message50->pluck('id')->min();
$messageins = message::where('group_id',$_POST['group_id']);
$deletemessage = $messageins->where('id','<',$deleteid);
$image = $deletemessage->pluck('image_path');
foreach($image as $item){
if($item !== null){
$item = basename($item);
$disk = Storage::disk('s3');
$disk->delete('/', $item);
}
}
$deletemessage->delete();
}
해설
상술한 일과 다른 부분은 foreach
이후다.$image = $deletemessage->pluck('image_path');
image_ 확인path만 포함하는 그룹 $image를 만듭니다.물론 이미지 메시지가 없는 경우 image_path열이 비어 있습니다.
"BppGmL1UlOZ28bkpEKmX4ik0LoK45FcEuIzJQgcP.jpeg"를 키 이름으로 s3에 저장된 파일을 삭제하려면$disk = Storage::disk('s3');
$disk->delete('/BppGmL1UlOZ28bkpEKmX4ik0LoK45FcEuIzJQgcP.jpeg');
.
이 키 이름을 변수로 바꾸기만 하면 됩니다.foreach와if를 사용하여 이미지 열의 파일을 하나씩 삭제합니다.
Reference
이 문제에 관하여((계속) 컨트롤러에서 s3에 저장된 이미지 삭제(Laravel)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/u_rin/items/a69663d5e9caee5ab964
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
화면은 아래와 같다.
'파일 선택'에서 이미지를 선택하고'보내기'를 누르면 이미지는 컨트롤러를 통해 s3에 저장됩니다.
이미지를 저장하는 s3 링크를 image_path열에 저장합니다.파일 이름 앞에 path를 붙여서 저장합니다.
https://バケット名.s3.us-east-2.amazonaws.com/ファイルハッシュ名.jpeg
이런 요령.그림을 표시할 때blade.php에서
<img>
표시로 호출합니다.'s3의 저장 방법'등 작은 부분은 건너뛰고 썼다.만약 수요가 있다면, 나는 다른 보도를 뒤쫓아 쓰고 싶다.
코드
코드 바로 업로드할게요.이른바 결론이 제일이다.
움직이기 전에 여러 가지 오류가 있었지만 거의 모두 오류여서 쓰지 않았다.
GroupController.php@send$count = $message->where('group_id',$_POST['group_id'])->count();
if ($count > 50) {
$message50 = DB::table('messages')
->where('group_id', $_POST['group_id'])
->orderBy('id','desc')
->take(50);
$deleteid = $message50->pluck('id')->min();
$messageins = message::where('group_id',$_POST['group_id']);
$deletemessage = $messageins->where('id','<',$deleteid);
$image = $deletemessage->pluck('image_path');
foreach($image as $item){
if($item !== null){
$item = basename($item);
$disk = Storage::disk('s3');
$disk->delete('/', $item);
}
}
$deletemessage->delete();
}
해설
상술한 일과 다른 부분은 foreach
이후다.$image = $deletemessage->pluck('image_path');
image_ 확인path만 포함하는 그룹 $image를 만듭니다.물론 이미지 메시지가 없는 경우 image_path열이 비어 있습니다.
"BppGmL1UlOZ28bkpEKmX4ik0LoK45FcEuIzJQgcP.jpeg"를 키 이름으로 s3에 저장된 파일을 삭제하려면$disk = Storage::disk('s3');
$disk->delete('/BppGmL1UlOZ28bkpEKmX4ik0LoK45FcEuIzJQgcP.jpeg');
.
이 키 이름을 변수로 바꾸기만 하면 됩니다.foreach와if를 사용하여 이미지 열의 파일을 하나씩 삭제합니다.
Reference
이 문제에 관하여((계속) 컨트롤러에서 s3에 저장된 이미지 삭제(Laravel)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/u_rin/items/a69663d5e9caee5ab964
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$count = $message->where('group_id',$_POST['group_id'])->count();
if ($count > 50) {
$message50 = DB::table('messages')
->where('group_id', $_POST['group_id'])
->orderBy('id','desc')
->take(50);
$deleteid = $message50->pluck('id')->min();
$messageins = message::where('group_id',$_POST['group_id']);
$deletemessage = $messageins->where('id','<',$deleteid);
$image = $deletemessage->pluck('image_path');
foreach($image as $item){
if($item !== null){
$item = basename($item);
$disk = Storage::disk('s3');
$disk->delete('/', $item);
}
}
$deletemessage->delete();
}
상술한 일과 다른 부분은
foreach
이후다.$image = $deletemessage->pluck('image_path');
image_ 확인path만 포함하는 그룹 $image를 만듭니다.물론 이미지 메시지가 없는 경우 image_path열이 비어 있습니다."BppGmL1UlOZ28bkpEKmX4ik0LoK45FcEuIzJQgcP.jpeg"를 키 이름으로 s3에 저장된 파일을 삭제하려면
$disk = Storage::disk('s3');
$disk->delete('/BppGmL1UlOZ28bkpEKmX4ik0LoK45FcEuIzJQgcP.jpeg');
.이 키 이름을 변수로 바꾸기만 하면 됩니다.foreach와if를 사용하여 이미지 열의 파일을 하나씩 삭제합니다.
Reference
이 문제에 관하여((계속) 컨트롤러에서 s3에 저장된 이미지 삭제(Laravel)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/u_rin/items/a69663d5e9caee5ab964텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)