をご覧ください。
<?php echo form_open_multipart('welcome/do_upload');?>
<input type="file" name="userfile" size="20" />
制御装置内
function do_upload()
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$config['overwrite'] = TRUE;
$config['encrypt_name'] = FALSE;
$config['remove_spaces'] = TRUE;
if ( ! is_dir($config['upload_path']) ) die("THE UPLOAD DIRECTORY DOES NOT EXIST");
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload('userfile')) {
echo 'error';
} else {
return array('upload_data' => $this->upload->data());
}
}
そして、この関数を次のように呼び出します。
$this->data['data'] = $this->do_upload();
を呼び出して、この画像を表示します。
<ul>
<?php foreach ($data['upload_data'] as $item => $value):?>
<li><?php echo $item;?>: <?php echo $value;?></li>
<?php endforeach; ?>
</ul>
何がエラーなのかわかりません。
問題は、フォームのリクエストを welcome/do_upload
に送り、$this->do_upload()
で別のメソッドに Welcome::do_upload()
を呼び出すことらしいです。
したがって、$this->do_upload();
を 2番目のメソッド で呼び出すと、$_FILES
配列は empty になってしまうでしょう。
そして、それが var_dump($data['upload_data']);
が NULL
を返す理由です。
もし welcome/second_method
からファイルをアップロードしたい場合は、フォームのリクエストを welcome/second_method に送り、そこで $this->do_upload();
を呼び出してください。
次に、フォームヘルパー関数(View内)を以下のように変更します1:
// Change the 'second_method' to your method name
echo form_open_multipart('welcome/second_method');
CodeIgniterは、File Uploadingライブラリを使用することで、アップロードのプロセス]1を非常にうまく文書化しています。
ユーザーガイドのサンプルコードを見てください。また、アップロード設定の理解を深めるために、マニュアルページの最後にある設定項目の説明セクションをチェックしてください。
また、CodeIgniterのファイルアップロードについては、いくつかの記事とサンプルがありますので、そちらも参考にしてください。
余談ですが、CodeIgniterのサンプルコードを使用する前に、 url
と form
ヘルパー関数をロードしていることを確認してください。
// Load the helper files within the Controller
$this->load->helper('form');
$this->load->helper('url');
1.ファイルアップロードを行うには、フォームが "multipart" 型である必要があります。そのため、 form_open_multipart()
ヘルパー関数を使用する必要があります。
フォームメソッド="post" action="controller/method" enctype="multipart/form-data" />` を返すヘルパー関数を使用します。
codeigniterで簡単な画像アップロード。
簡単に画像をアップロードするためのコードを以下に示します。
<?php echo form_open_multipart('welcome/do_upload');?>
<input type="file" name="userfile" size="20" />public function doupload()
{
$upload_path="https://localhost/project/profile"
$uid='10'; //creare seperate folder for each user
$upPath=upload_path."/".$uid;
if(!file_exists($upPath))
{
mkdir($upPath, 0777, true);
}
$config = array(
'upload_path' => $upPath,
'allowed_types' => "gif|jpg|png|jpeg",
'overwrite' => TRUE,
'max_size' => "2048000",
'max_height' => "768",
'max_width' => "1024"
);
$this->load->library('upload', $config);
if(!$this->upload->do_upload('userpic'))
{
$data['imageError'] = $this->upload->display_errors();
}
else
{
$imageDetailArray = $this->upload->data();
$image = $imageDetailArray['file_name'];
}
}
画像のアップロードにお役立てください。
このようにコードを変更します。これで完璧に動作します。
public function uploadImageFile() //gallery insert
{
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$new_image_name = time() . str_replace(str_split(' ()\\/,:*?"<>|'), '',
$_FILES['image_file']['name']);
$config['upload_path'] = 'uploads/gallery/';
$config['allowed_types'] = 'gif|jpg|png|bmp|jpeg';
$config['file_name'] = $new_image_name;
$config['max_size'] = '0';
$config['max_width'] = '0';
$config['max_height'] = '0';
$config['$min_width'] = '0';
$config['min_height'] = '0';
$this->load->library('upload', $config);
$upload = $this->upload->do_upload('image_file');
$title=$this->input->post('title');
$value=array('title'=>$title,'image_name'=>
$new_image_name,'crop_name'=>$crop_image_name);}
ファイルのアップロードは、多くのWebアプリで不可欠なプロセスです。 ほとんどすべてのWebサイトとWebアプリには、統合されたファイルアップロードコンポーネントが必要です。 CodeIgniter搭載アプリでのファイルと画像のアップロードは、ほとんど問題のないアップロードプロセスを処理するシンプルなコンポーネントです。
コントローラーを作成します。
次のステップは、コントローラーフォルダーにファイルを作成することです。 ファイルupload_controller.phpに名前を付けます。 このファイルでは、次のコードでアップロードクラスを初期化するためのライブラリをロードします。
$this->load->library('upload');
また、コントローラー関数 do_upload()
を使用して、ファイルのアップロードプロセスの設定を設定します。 この関数には、次のコードが含まれます。
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
詳細については、ご覧ください。 https://www.cloudways.com/blog/codeigniter-upload-file-image/。
//this is the code you have to use in you controller
$config['upload_path'] = './uploads/';
// directory (http://localhost/codeigniter/index.php/your directory)
$config['allowed_types'] = 'gif|jpg|png|jpeg';
//Image type
$config['max_size'] = 0;
// I have chosen max size no limit
$new_name = time() . '-' . $_FILES["txt_file"]['name'];
//Added time function in image name for no duplicate image
$config['file_name'] = $new_name;
//Stored the new name into $config['file_name']
$this->load->library('upload', $config);
if (!$this->upload->do_upload() && !empty($_FILES['txt_file']['name'])) {
$error = array('error' => $this->upload->display_errors());
$this->load->view('production/create_images', $error);
} else {
$upload_data = $this->upload->data();
}
$image_folder = APPPATH . "../images/owner_profile/" . $_POST ['mob_no'] [0] . $na;
if (isset ( $_FILES ['image'] ) && $_FILES ['image'] ['error'] == 0) {
list ( $a, $b ) = explode ( '.', $_FILES ['image'] ['name'] );
$b = end ( explode ( '.', $_FILES ['image'] ['name'] ) );
$up = move_uploaded_file ( $_FILES ['image'] ['tmp_name'], $image_folder . "." . $b );
$path = ($_POST ['mob_no'] [0] . $na . "." . $b);
一度に1つのファイルをアップロードするためのコードの下。 これは正しく、単一のファイルをアップロードするのに最適です。 コメントされたすべての手順を読み、コードに従ってください。 間違いなく、それは働いています。
public function upload_file() {
***// Upload folder location***
$config['upload_path'] = './public/upload/';
***// Allowed file type***
$config['allowed_types'] = 'jpg|jpeg|png|pdf';
***// Max size, i will set 2MB***
$config['max_size'] = '2024';
$config['max_width'] = '1024';
$config['max_height'] = '768';
***// load upload library***
$this->load->library('upload', $config);
***// do_upload is the method, to send the particular image and file on that
// particular
// location that is detail in $config['upload_path'].
// In bracks will set name upload, here you need to set input name attribute
// value.***
if($this->upload->do_upload('upload')) {
$data = $this->upload->data();
$post['upload'] = $data['file_name'];
} else {
$error = array('error' => $this->upload->display_errors());
}
}