codeigniter文件上传失败

时间:2013-03-15 20:15:35

标签: php upload codeigniter-2

无法上传文件。 $this->upload->do_upload('anonsphoto');返回false。无法找出原因。

我将上传库添加到自动加载方式:$autoload['libraries'] = array('upload');

以下是我的观点:

<?php
echo form_open_multipart('InterviewController/saveInterview');

$anons_data = array(
    'name'        => 'anons',
    'id'          => 'anons_area',
    'value'       => 'Введите анонс'
);
echo form_textarea($anons_data); ?>

<p>Картинка анонса</p>
<?php
echo form_upload('anonsphoto'); ?>

这是上传文件的控制器:

public function saveInterview() {
    $config['upload_path'] = '/application/upload/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '10000';
    $config['file_name'] = 'img_' . (string) time();
    $this->upload->initialize($config);

    $this->upload->do_upload('anonsphoto');
    return;
}

上传文件是3 kb大小的png文件。我无法理解为什么do_upload返回false。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

文件上传课程说明您需要的所有内容。 https://www.codeigniter.com/userguide3/libraries/file_uploading.html

这是关键:

$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';

$this->load->library('upload', $config);

// Alternately you can set preferences by calling the initialize function. Useful if you auto-load the class:
$this->upload->initialize($config);

“”。 (点)表示当前上载路径的目录。因此,您的应用程序无法正常运行,因为您的根路径未以(点)开头。

您的文件夹应具有完全权限(CHMOD)至0755。

此:

$config['upload_path'] = './uploads/'; 

表示:当前目录和上传目录

或:

$config['upload_path'] = $_SERVER['DOCUMENT_ROOT'].'/application/upload/';

表示:您的完整文档URI路径和可以说的目录'/application/upload/'

别忘了放(点)。在$_SERVER['DOCUMENT_ROOT']'/application/upload'之间。

最大尺寸应为KiB值:$config['max_size'] = '10000';

希望这有助于理解它的工作原理。

答案 1 :(得分:0)

我认为你的上传路径是错误的。尝试使用

$config['upload_path'] = $_SERVER['DOCUMENT_ROOT'].'/application/upload/';

并确保该目录是可写的。