CodeIgniter 2.1.4 と AJAX 経由のファイルのアップロードで問題が発生しています。
私は現在、次のように完全に送信するフォームを持っています( views/load_form ):
<!--form created to add member to database -->
<?php echo form_open_multipart('index.php/member_record/add_member'); ?>
<?php echo form_fieldset('Create Membership Record'); ?>
<div class="container">
<form id="memberform" role="form">
<?php echo form_label('First Name', 'fname'); ?>
<?php echo form_input('fname'); ?>
</div>
<!--other such fields omitted for brevity-->
<label>Upload scanned ID Card</label>
<input type="file" name="scIDFile" id="scIDFile" />
<p class="help-block">Select image as either JPEG, GIF, PNG</p>
<input id="submit" type="submit" name="submit" value="Create Record" class="btn btn-success"/>
<!--end of view-->
これをうまく処理するコントローラーがあります(controllers/member_record):
public member_record extends CI_Controller{
public add_member(){
$config['upload_path'] = './files/';
$config['allowed_types'] = 'gif|jpg|png|pdf';
$config['max_size']= 1024*8;
$config['encrypt_name']=TRUE;
$config['overwrite'] =TRUE;
$this->load->library('upload',$config);
foreach($_FILES as $field => $file){
if($file['error'] == 0){
if($this->upload->do_upload($field)){
/*$image_config=array(
'source_image'=>$data['full_path'],
'new_image'=>$data['file_path'].'/thumbs',
'maintain_ratio'=>true,
'width'=>150,
'height'=>100
);
$this->load->library('image_lib',$image_config);
$this->image_lib->resize();*/
}else{
$errors = $this->upload->display_errors();
}
}
}
}
}
そして、これは大丈夫でした。ただし、ビューに追加する特定の新しい機能により、物事を AJAX に変換し、これらすべての値を AJAX を介してバックエンドに渡す必要があります。すべてのフィールド (名、姓など) を POST 経由でバックエンドに送信できましたが、ファイルのアップロードを有効にするのに苦労しています! jQuery File Upload プラグインを使用してみましたが、CodeIgniter 2 でそれらを使用する方法について明確な指示はありません (特に現在のコードを考えると)。誰かがこれに光を当てることができれば、私はそれを感謝します.