2013-04-02 2 views
0

이미지를 표시하고 싶습니다. 사용자는 최대 7 개의 이미지를 추가 할 수 있지만 필요한 경우 7 개 미만을 추가 할 수도 있습니다.PHP 파일이 항상 존재 함 - CodeIgniter

내가 검색 한 결과 file_exists()이 내가 선택한 기능이라는 것을 알았지 만 몇 가지 방법을 시도했지만 항상 내게 이미지가 없습니다.

여기에 내가 시도 한 방법 : 다음

<?php if(file_exists(base_url() . "photos/" . $p['p_id'] . "_5.jpg")):?> 
    <div class="single"> 
     <a href="<?php echo base_url();?>photos/<?php echo $p['p_id'];?>_5.jpg" rel="lightbox[image]"> 
     <img src="<?php echo base_url();?>photos/<?php echo $p['p_id'];?>_5.jpg" style="width:100px; height:100px;"/> 
     </a> 
    </div> 
<?php endif; ?> 

나는 주위를 검색하고 좋은 생각이 함수 내에서의 경로를 정의하는 것을 발견, 그래서 내가 밖에서 그것을 정의 :

<?php $path = base_url() . "photos/" . $p['p_id'] . "_";?> 
    <?php $img4 = $path . "4.jpg";?> 
     <?php if(file_exists($img4)):?> 

도 작동하지 않았습니다. 4 개의 이미지가 '사진'폴더에 있는지 테스트 중이므로 4 개의 이미지가 표시되어야합니다. 내가 어떻게 그것을 고쳐야하는지에 대한 아이디어는 훌륭 할 것이다. 감사합니다

답변

4

함수는 은 매개 변수로 파일 경로를 받아들이지 만 현재 사용중인 것과 같은 URL은 CodeIgniter의 base_url()이 아닙니다.

codeigniter 앱의 기본 디렉토리를 가리키는 FCPATH 상수를 사용해야합니다. 정말 당신이 base_url()를 사용해야 할 경우

<?php $path = FCPATH . "htdocs/images/" . $product[0]['product_id'] . "_";?> 

을하지만 어떤 이유로 : 이것은 당신이 (당신의 이미지 파일은 응용 프로그램 디렉토리에있는 위치에 따라 달라집니다) 경로에 할당해야합니다 것입니다. 연관 배열의 url에 의해 반환 된 헤더를 검사하고 실패하면 false를 확인하는 get_headers()을 사용할 수 있습니다. 반환 된 헤더에서 이미지 URL이 유효한지 여부를 확인할 수 있습니다. More about get_headers().

희망이 있습니다.

+2

'BASEPATH'는 사용할 수없는 상수입니다. 시스템 폴더 경로를 가리 킵니다. 정적 자산의 경우,'FCPATH'가 더 적합합니다.'index.php'가있는 디렉토리의 경로입니다 (FC는 프론트 컨트롤러를 의미합니다). –

+0

@Cryode : 그 점을 발견해 주셔서 감사합니다! –

+0

그것을 지적 해 주셔서 고마워요, 그 속임수를 않습니다 – a7omiton

1

파일이 존재

건배,

Ardy가 아닌 URL을 디렉토리 경로를 필요로하는 URL은 항상 false를 반환합니다.

<?php 
    for($i=1; $i < 7; $i++): 
    { 
    $img = $path . $i . ".jpg"; 
    $url=getimagesize($img); 
    if(!is_array($url)) 
    { 
    ?> 
    <div class="single"> 
      <a href="<?php echo base_url();?>images/<?php echo $product[0]['product_id'];?>_<?php echo $i; ?>.jpg" rel="lightbox[productimage]"> 
        <img src="<?php echo base_url();?>images/<?php echo $product[0]['product_id'];?>_<?php echo $i; ?>.jpg" style="width:100px; height:100px;"/> 
       </a> 
      </div> 
    <?php 
    } 
    } 
    ?> 

주의해야 할 점은 느린 쪽을 터치하는 것입니다.하지만 서버의 URL에서 작동합니다.

+0

안녕하세요 릭 칼더, 왜 당신 getimagesize()를 사용하는지 이해가 안돼? – a7omiton

+0

file_exists가 URL에서 작동하지 않는다고 말하면 실제 디렉토리 경로 (예 : C :/my documents)가 필요합니다. getimagesize URL에서 작동합니다. 그러면 이미지에 대한 응답이 배열 인 경우 –

+0

아, 보시고, 지금 시도해 보겠습니다. – a7omiton

관련 문제