2010-07-04 5 views

답변

1

다음과 같이 나는 성공적 CodeIgniter의에서 uploadify 구현 :

헤더보기에서

:

<script type="text/javascript" src="<?php echo base_url()?>resources/js/jquery.js"></script> 
<link rel="stylesheet" type="text/css" media="all" href="<?php echo base_url()?>resources/uploadify/uploadify.css" /> 
<script type="text/javascript" src="<?php echo base_url()?>resources/uploadify/swfobject.js"></script> 
<script type="text/javascript" src="<?php echo base_url()?>resources/uploadify/jquery.uploadify.v2.1.0.min.js"></script> 

페이지보기에서 :

<input id="fileInput" name="fileInput" type="file" /> 
<script type="text/javascript"> 
    $(document).ready(function() { 
    $("#fileInput").uploadify({ 
     'uploader'  : '<?php echo base_url()?>resources/uploadify/uploadify.swf', 
     'script'   : '<?php echo site_url()?>/managerupload/vehicle_imageUpload', 
     'cancelImg'  : '<?php echo base_url()?>resources/uploadify/cancel.png', 
     'fileExt'  : '*.jpg;*.jpeg;*.png;*.gif', 
     'folder'   : '/nonexistant', 
     'auto'   : true, 
     'multi'   : false, 
     'scriptData'  : {'vehicleID': '<?php echo $vehicleID?>'}, 
     'onComplete'  : function() {vImg_reload('<?php echo $vehicleID?>');} 
    }); }); 

</script> 

scriptData의 설정 옵션 POST를 통해 전달됩니다.

참고 : onComplete 구성 옵션을 사용하면 기능을 실행할 수 있습니다. 이 경우 현재 차량의 이미지를 업데이트하는 것은 Ajax 호출입니다. 이것은 당신에게 관련이 있거나 그렇지 않을 수도 있습니다. 그것이 있으면 나는 그것을 게시 할 것입니다 알려주십시오. 그것이 그렇듯이, 나는 오히려 물을 진흙 투성이로 만들지 않을 것이다. 제어기에서

:

function vehicle_imageUpload(){ 
    $this->_checklogin(); 

    $file_dir = "vehicle_images/"; 

    $config['upload_path'] = './vehicle_images/'; 
    $config['allowed_types'] = 'gif|jpg|png'; 
    $config['max_size'] = '1000000'; 
    $config['overwrite'] = TRUE; 
    $config['remove_spaces'] = TRUE; 
    $config['encrypt_name'] = FALSE; 

    $this->load->library('upload', $config); 

    if(! $this->upload->do_upload('Filedata')){ 
     echo $this->upload->display_errors(); 
    }else{ 

     $errors = $this->upload->display_errors(); 

     $upload_info = $this->upload->data(); 

     // Insert file information into database 
     $insert_data = array(
     'vImg_vehicle_id_fk' => $this->input->post('vehicleID'), 
     'vImg_filename' => $upload_info['file_name'], 
     'vImg_filepath' => $upload_info['file_path'], 
     'vImg_primary' => 1, 
     'vImg_directory' => $file_dir 
     ); 
     $this->db->insert('vehicle_images', $insert_data); 
     } 
} 

이것은 CI 업로드 클래스를 사용하는 표준 업로드 핸들러; 여기에 전달 된 POST 항목 'vehicleID'를 사용하여 이미지 레코드를 데이터베이스에 삽입했습니다.

모든 플래시 항목과 마찬가지로 Flash Cookie Bug을 해결해야합니다. 두 가지 옵션이 있습니다. 위에서 설명한대로 Uploadify의 'scriptData'배열을 통해 세션 ID를 전달하고 기존 세션 ID로 업로드 컨트롤러에서 세션을 다시로드하십시오. 다른 옵션은 Codeigniter가 세션 사용자 에이전트와 일치하지 않도록하는 것입니다. 응용 프로그램에서

/config.php를

$config['sess_match_useragent'] = FALSE; 

이이 세션에 속하는 나던 사용자 에이전트를 볼 때 세션을 파괴 세션 클래스를 방지 할 수 있습니다.

보안 문제가 걱정된다면 사용자 에이전트가 가짜 일뿐만 아니라 기존 보안이 제대로 구현되면 아무런 문제가 없음을 기억해야합니다.

+0

현재이를 확인할 수 없습니다. 내가 2 일 동안 나간다. 나는 이것을 점검 할 것이고, 여기에서 빨리 되돌아 가게 될 것이다! 대단히 감사합니다! :) – esafwan

+0

아무런 문제가 없어 당신을 위해 작동합니다. – DRL

0

나는 프로젝트를보고 있었지만 프로토 타입을 가지고 있기 때문에 그것을 사용하지 않기로 결정했기 때문에 두 사람이 잘 작동하도록 할 수 없었습니다. 그래도 난, 내 여행이 찾을 않았다

http://uploadify.com/forum/viewtopic.php?f=7&t=47&p=210&hilit=codeigniter#p1855

희망이 도움이됩니다.

참고로, AJAX의 CI 업로드 클래스, iframe 및 프로토 타입을 사용하여 끝났습니다. 관련 게시물 here을 참조하십시오.

0

우리는 최근에 우리가 진행중인 프로젝트에서 이것을 사용했고, 예제 인 uploadify.php를 웹 루트에 넣었습니다.

자바 스크립트와 플래시가이 파일을 호출하여 업로드를 처리하고 uploadify.php를 수정하여 업로드 된 파일 데이터를 반향시킵니다. 거기에서 원래 페이지의 javascript는 우리가 사용하는 양식에 숨겨진 입력을 추가합니다.

사용자가 양식을 제출하면 CI 컨트롤러/메소드가 호출되고 이미지의 크기 조정/조작을 처리하는 것이이 작업입니다.

추가 설명이 필요하면 알려 주시기 바랍니다.

편집 : 질문의 다른 부분에 답하려면 플래시가 설치되어 있지 않으면 일반 파일 입력 요소가 표시됩니다. 우리가 그것을 사용하는 방법, 자바 스크립트가 올바른 기능을 위해 필요하지만, 그것은 디자인 선택했다.

관련 문제