douer9399 2018-01-24 16:22
浏览 66

CodeIgniter 3:“您尚未指定任何允许的文件类型。 您尝试上传的文件类型是不允许的。“

I'm attempting to do a File Upload using the CodeIgniter "upload" library, but everytime I try to upload something I get this error:

"You have not specified any allowed file types. The filetype you are attempting to upload is not allowed."

I've searched and tried many solutions here on StackOverflow but none of them are working, here's my code:

views/screenshots.php

<form method="post" enctype="multipart/form-data" action="{baseurl}/upload/screenshot">
                    <input type="hidden" name="serverid" value="{id}" />
                    <label>Carica uno Screenshot</label>
                    <br />
                    <label class="custom-file" id="customFile" for="screenshot">
                        <input type="file" class="custom-file-input" id="screenshot" name="screenshot" aria-describedby="fileHelp">
                        <span class="custom-file-control form-control-file"></span>
                    </label>
                    <br />
                    <button type="submit" class="btn btn-secondary">Carica file</button>
                </form>

config/upload.php

$config['allowed_types'] = '*';
$config['max_size'] = 1024 * 8;
$config['encrypt_name'] = TRUE;

controllers/upload.php

public function screenshot()
{
    /* Upload library config */
    $config['upload_path'] = './files/screenshots/';
    $this->upload->initialize($config);

    /* Upload and check if it's failed */
    if (!$this->upload->do_upload('screenshot')) {
        $error = array('error' => $this->upload->display_errors());
        echo json_encode($error);
        print_r($this->upload->data());
    } else {
        /* Making an array with all the data of the upload */
        $upload_data = $this->upload->data();

        /* Making an array to pass to the Screenshot_model */
        $screenshot = array(
            'id_server' => $this->input->post('serverid'),
            'id_user' => $this->session->userdata('userid'),
            'image_url' => $upload_data('file_name')
        );

        /* Saving the Screenshot info into the database */
        $this->Screenshot_model->addScreen($screenshot);

        /* Redirect to Server edit */
        redirect('/screenshots/'.$screenshot['id_server']);
    }

}

print_r($this->upload->data()) result

Array ( [file_name] => download.png [file_type] => image/png [file_path] => C:/xampp/htdocs/gameparade/files/screenshots/ [full_path] => C:/xampp/htdocs/gameparade/files/screenshots/download.png [raw_name] => download [orig_name] => [client_name] => download.png [file_ext] => .png [file_size] => 1806 [is_image] => 1 [image_width] => [image_height] => [image_type] => [image_size_str] => )

I'm autoloading the library. My version of CodeIgniter is 3.1.6. I've also tried to use form_open_multipart(); in the view, but nothing changes.

I'm using XAMPP 7.2.0 on Windows 10 (PHP Version 7.2.0).

  • 写回答

2条回答 默认 最新

  • douwei8295 2018-01-24 16:29
    关注

    Replace:

    $this->upload->initialize($config);
    

    with:

    $this->upload->initialize($config, false);
    

    From the docs (https://www.codeigniter.com/userguide3/libraries/file_uploading.html):

    initialize([array $config = array()[, $reset = TRUE]])

    Parameters:

    $config (array) – Preferences

    $reset (bool) – Whether to reset preferences (that are not provided in $config) to their defaults

    评论

报告相同问题?

悬赏问题

  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab