0

在过去的一个小时里,我一直在搜索 Code Igniter 论坛,试图弄清楚这一点:

我正在使用 Code Igniter 为 Web 应用程序编写文件上传处理程序。到目前为止,我有以下代码来处理上传:

public function send() {        
    $config = array(
        'upload_path' => 'path/to/my/upload/directory',
        'allowed_types' => 'pdf'
    );

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

    $this->upload->do_upload('pdf_upload');

    echo "<pre>";
    print_r($this->upload->data());
    echo "</pre>";
    exit();
}

而我的观点:

<?= $errors ?> <br />
<?= form_open_multipart('/Upload_test/send') ?>
    <p><label for="pdf_upload">File: (PDF ONLY)</label> <input type="file" name="pdf_upload" id="pdf_upload" /></p>
    <p><input type="submit" /></p>
</form>

当我提交选择了有效 PDF 文件的表单时,我会从以下位置获得以下输出print_r()

Array
(
    [file_name] => my_file.pdf
    [file_type] => 
    [file_path] => path/to/my/upload/directory/
    [full_path] => path/to/my/upload/directory/my_file.pdf
    [raw_name] => my_file
    [orig_name] => 
    [client_name] => my_file.pdf
    [file_ext] => .pdf
    [file_size] => 4190
    [is_image] => 
    [image_width] => 
    [image_height] => 
    [image_type] => 
    [image_size_str] => 
)

文件类型为空白。这可能是什么原因造成的?我错过了什么?

4

1 回答 1

0

我在一个相关但不重复的问题中找到了答案:在 Codeigniter 中上传 - 不允许您尝试上传的文件类型

如果您使用的是 Codeigniter 2.1.0 版,则上传库中存在错误。有关详细信息,请参阅http://codeigniter.com/forums/viewthread/204725/ 。

基本上我所做的是修改文件上传类中的几行代码(位置:./system/libraries/Upload.php)

1)修改行号1044

从:

$this->file_type = @mime_content_type($file['tmp_name']);
return;

对此:

$this->file_type = @mime_content_type($file['tmp_name']);
if (strlen($this->file_type) > 0) return; 

2)修改行号1058

从:

@exec('file --brief --mime-type ' . escapeshellarg($file['tmp_path']), $output, $return_code);

对此:

@exec('file --brief --mime-type ' . escapeshellarg($file['tmp_name']), $output, $return_code); 

正如您可能看到的,第 1058 行尝试使用不存在的数组值。

于 2012-09-05T15:58:49.117 回答