2014-04-09 1 views
0

테이블 이름의 이미지가 있습니다.이 ID, 이름, URL 및 타임 스탬프 필드가 있습니다.Laravel 4.x : 파일을 삭제하는 방법?

http://localhost/project/public/uploads/gallery/1/_DSC845645490.jpg 

하지만 난 그것을 확인하는 경우 :

if(file_exists(Image::find($id)->url)){ 
      return 'has image'; 
     }else{ 
      return 'no image'; 
     } 

$image=Image::find($id); 
$url=$image->url; 
if(unlink("$url")){ 
    $image->delete(); 
    return true; 
}else 
    return false; 

그것은 내가있어 URL을 에코 그렇게 작동하지 않습니다 여기

내 코드입니다

'이미지가 없습니다.'웹 브라우저에 이미지를 표시 할 수 있습니다.

그 이유는 무엇입니까? 아무도 나를 도울 수 있습니까?

답변

0

Illuminate \ Filesystem \ Filesystem 클래스의 메소드가 있습니다 (http://laravel.com/api/4.1/ 및 'filesystem'검색 참조).

당신은 그 방법 BTW이

File::delete(path/to/file/relative/to/public/folder); 

같은을 삭제 호출 할 수 있습니다 : 어쩌면 당신의 코드가 좋다하지만 당신은 URL 필드에 무엇을해야합니까? 그것은 상대 paht가 있다면, 당신은 또한

<?php 
    if(file_exists($_SERVER{'DOCUMENT_ROOT'} . "/my_images/abc.jpg")) { 
    ... 
    } 
?> 

(http://www.php.net/manual/en/function.file-exists.php에서 예) I이 사용

+0

삭제할 수 있도록 쓰기 가능해야하므로'is_writable()'을 사용하는 것이 좋습니다. – phoops

+0

내 URL 필드는 다음과 같은 절대 경로입니다. http : //localhost/project/public/uploads/gallery/1/_DSC845645490.jpg – Newbie

+0

File :: delete()도 사용했지만 작동하지 않았습니다. 이 방법은 unlink()도 사용합니다 : https : //github.com/laravel/framework/blob/master/src/Illuminate/Filesystem/Filesystem.php – Newbie

1

처럼 뭔가를 앞에 추가해야하고 그것이 내가

여기
File::delete(public_path('img/slider/').$delete_image); 

$의 delete_image을 사용 매번 일은 파일과 경로의 이름입니다. public_path() 메서드는 laravel의 루트 폴더에서 시작하는 경로입니다. yourProj ect/public/