如何在 CodeIgniter 中上传图片? [英] How to upload image in CodeIgniter?
问题描述
在视图中
<?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
,并调用 Welcome::do_upload()
方法通过 $this->do_upload()
在另一个方法中使用.
It seems the problem is you send the form request to welcome/do_upload
, and call the Welcome::do_upload()
method in another one by $this->do_upload()
.
因此,当您在第二种方法中调用 $this->do_upload();
时,$_FILES
数组将是 <强>空.
Hence when you call the $this->do_upload();
within your second method, the $_FILES
array would be empty.
这就是为什么 var_dump($data['upload_data']);
返回 NULL
.
And that's why var_dump($data['upload_data']);
returns NULL
.
如果您想从 welcome/second_method
上传文件,请将表单请求发送到您调用 $this->do_upload 的 welcome/second_method();
.
If you want to upload the file from welcome/second_method
, send the form request to the welcome/second_method where you call $this->do_upload();
.
然后将表单辅助函数(在View内)更改为如下1:
Then change the form helper function (within the View) as follows1:
// Change the 'second_method' to your method name
echo form_open_multipart('welcome/second_method');
使用 CodeIgniter 上传文件
CodeIgniter 已记录上传过程 非常好,通过使用文件上传库.
File Uploading with CodeIgniter
CodeIgniter has documented the Uploading process very well, by using the File Uploading library.
您可以查看用户指南中的示例代码;此外,为了更好地理解上传配置,请查看手册页末尾的配置项说明部分.
You could take a look at the sample code in the user guide; And also, in order to get a better understanding of the uploading configs, Check the Config items Explanation section at the end of the manual page.
还有几篇关于在 CodeIgniter 中上传文件的文章/示例,您可能需要考虑:
Also there are couple of articles/samples about the file uploading in CodeIgniter, you might want to consider:
- http://code.tutsplus.com/tutorials/how-to-upload-files-with-codeigniter-and-ajax--net-21684
- http://runnable.com/UhIc93EfFJEMAADX/how-to-upload-file-in-codeigniter
- http://jamshidhashimi.com/image-upload-with-codeigniter-2/
- http://code.tutsplus.com/tutorials/how-to-upload-files-with-codeigniter-and-ajax--net-21684
- http://hashem.ir/CodeIgniter/libraries/file_uploading.html(CodeIgniter 3.0-dev 用户指南)
作为一个旁注:在使用 CodeIgniter 示例代码之前,请确保您已经加载了 url
和 form
辅助函数:
Just as a side-note: Make sure that you've loaded the url
and form
helper functions before using the CodeIgniter sample code:
// Load the helper files within the Controller
$this->load->helper('form');
$this->load->helper('url');
// Load the helper files within the application/config/autoload
$autoload['helper'] = array('form', 'url');
这篇关于如何在 CodeIgniter 中上传图片?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!