codeigniter
CodeIgniterの画像/ファイルアップローダ
サーチ…
備考
(コントローラ、ファイル、クラス、ID)またはそれが何であっても同じ名前を使用する必要はありません。私が使ったことはすべて、コーディングの流れと私の前提を理解するためのものです。コードを取得し、コード/名前を希望どおりに編集し、コードをホストして成功させるのは開発者次第です。
単一ファイル/イメージアップローダ
ここでは、CIメソッドによって提案されたフォームの助けを借りて、画像/ファイルアップロードコードがネイティブCIメソッドでどのように機能するかを見ていきます。
PHPでのファイルアップロードには2つのシナリオがあります。それは以下のように言及される。
- 単一画像/ファイルアップローダ - これは、フォーム属性の通常の変数の助けを借りて保存することができます。 (例)
<input type="file" name="image" />
- マルチイメージ/ファイルアップローダ - これは、ファイルタイプの名前の配列変数の助けを借りてのみ保存できます。 (例)
<input type="file" name="image[]" />
配列変数、すなわちname="profile[]"
にも維持することができるsingle image
アップローダ並びにmulti-image
すぎアップローダを 。
したがって、Native CodeIgnitor形式のシングルイメージ/ファイルアップローダコードは次のとおりです。
パーツを見る:
<?php
echo form_open_multipart('employee/addemployee', array('name' => 'addemployee', 'class'=>'form-horizontal'));
?>
<div class="form-group">
<label class="control-label col-sm-4" for="pwd">Profile:</label>
<div class="col-sm-8">
<input type="file" class="" id="profile" name="userimage">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<input type="submit" class="btn btn-primary pull-right" name="save" value="Save Employee" />
</div>
</div>
<?php
echo form_close();
?>
したがって、我々がフォームを提出すれば、それは
-
Employee
-addemployee
という名前の関数のコントローラと検索 - ファイルアップローダーコードに
required
属性がrequired
は、入力タグにrequired
というHTML5属性を追加できます。
以下は、required属性を使用する方法の2つの例ですが、どちらのメソッドも同じです。
- 方法1:
<input type="file" name="photo" required="required" />
- 方法2:
<input type="file" name="photo" required />
したがって、これらは、画像/ファイルアップローダの表示部分に従うべき重要なヒントの一部です。
コントローラ部:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Employee extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('employee_model');
$this->load->helper('url'); //This will load up all the URL parameters from the helper class
$this->load->helper('form'); //This will load up all the form attributes that are need by the form.
}
public function addemployee()
{
if($_FILES["userimage"]['name']=='')
{
// Here you can directly redirect to the form page itself with the Error Message
}
else
{
$new_name = time().$_FILES["userimage"]['name']; //This line will be generating random name for images that are uploaded
$config['upload_path'] = FCPATH ."assets/fileupload/";
$config['allowed_types'] = 'gif|jpg|png';
$config['file_name'] = $new_name;
$this->load->library('upload', $config); //Loads the Uploader Library
$this->upload->initialize($config);
if ( ! $this->upload->do_upload('userimage')) {}
else
{
$data = $this->upload->data(); //This will upload the `image/file` using native image upload
}
$data_value = array(
'profile'=>$new_name,
); //Passing data to model as the array() parameter
$this->employee_model->saveemployee($data_value); //save_employee is the function name in the Model
}
}
?>
注:デフォルトでアップロードルーチンは、ファイルと呼ばれるフォームフィールドから来ることを期待userfile
、およびform
タイプのものでなければならないmultipart
。
- したがって、
$data_value
配列を持つemployee_model
移動し、saveemployee
という関数の下にデータを保存します。 - 独自のフィールド名を設定したい場合は、その値を単に
do_upload()
メソッドにdo_upload()
ます - File Uploadingクラスを使用すると、ファイルをアップロードできます。アップロードするファイルのタイプとサイズを制限することもできます。
-
display_errors()
-do_upload()
メソッドがfalseを返した場合にエラーメッセージを取得します。メソッドは自動的にエコーしませんが、データを返しますので、必要に応じて割り当てることができます
表記法:
これらはCIで使用可能な表記法であり、 index.php
でショート定義として定義でき、Entireプロジェクトで使用できます。
EXT: The PHP file extension
FCPATH: Path to the front controller (this file) (root of CI)
SELF: The name of THIS file (index.php)
BASEPATH: Path to the system folder
APPPATH: The path to the "application" folder
モデルパーツ:
public function saveemployee($data_value)
{
$this->db->insert('employee',$data_value);
}
- アップロードされたイメージ名で
employee
テーブルにデータを保存します。 - アップロードされた画像は、ルートフォルダまたは指定した他のフォルダに作成したディレクトリに保存されます。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow