首先,我可以要求将其标记为重复。关于CodeIgniter上传库的问题,我已经阅读了关于SO的其他帖子,遗憾的是他们没有涵盖这一点。我还广泛阅读了CI文档,一切都表明这应该正常工作。
我使用一个非常简单的表单来获取文件,该文件正确上传到images文件夹。该文件的full_path也成功写入名为images的db表。但文件名是空白的。
我的表格:
<?php echo form_open_multipart('image_upload/do_upload');?>
<input type="file" name="userfile" size="20" multiple="true" />
<br /><br />
<input type="submit" value="upload" />
</form>
我的控制器功能:
function do_upload()
{
$config['upload_path'] = 'c:/wamp/www/honest/images';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '5000';
$config['overwrite'] = TRUE;
$config['remove_spaces'] = TRUE;
$this->load->library('upload', $config);
$image_data = $this->upload->data();
echo '<pre>'; print_r($image_data); echo '</pre>';
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
$data['main_content'] = 'imageupload';
$this->load->view('includes/template', $data);
echo "FAILED";
}
else
{
$data = array(
'filename' => $image_data['file_name'],
'fullpath' => $image_data['full_path']
);
$this->db->insert('images', $data);
$this->load->view('imageupload');
}
}
我正在使用
echo print_r($image_data); echo;
要显示关联的图像数据,但这只是返回的内容:
Array
(
[file_name] =>
[file_type] =>
[file_path] => c:/wamp/www/honest/images/
[full_path] => c:/wamp/www/honest/images/
[raw_name] =>
[orig_name] =>
[client_name] =>
[file_ext] =>
[file_size] =>
[is_image] =>
[image_width] =>
[image_height] =>
[image_type] =>
[image_size_str] =>
)
我无法弄清楚为什么它没有抓取文件名和其他细节 - 有人可以帮助发现什么是希望是一个简单的错误吗?
非常感谢,
DP。
答案 0 :(得分:2)
您在实际上传任何内容之前请求上传的数据。这就是为什么您的$image_data
仅包含您的配置值。在实际执行$image_data = $this->upload->data();
(进入您的其他区块)后,将do_upload()
来电移至:
function do_upload()
{
$config['upload_path'] = 'c:/wamp/www/honest/images';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '5000';
$config['overwrite'] = TRUE;
$config['remove_spaces'] = TRUE;
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
$data['main_content'] = 'imageupload';
$this->load->view('includes/template', $data);
echo "FAILED";
}
else
{
$image_data = $this->upload->data();
$data = array(
'filename' => $image_data['file_name'],
'fullpath' => $image_data['full_path']
);
$this->db->insert('images', $data);
$this->load->view('imageupload');
}
}