3

无法上传文件。$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 返回错误。有任何想法吗?

4

2 回答 2

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);

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

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

这:

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

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

或者:

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

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

不要忘记放 (dot) 。$_SERVER['DOCUMENT_ROOT']和之间'/application/upload'

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

希望这有助于理解它是如何工作的。

于 2013-03-15T20:31:41.227 回答
0

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

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

并确保该目录是可写的。

于 2013-03-15T20:25:40.067 回答