【问题标题】:You did not select a file to upload. PHP Code Igniter您没有选择要上传的文件。 PHP 代码点火器
【发布时间】:2013-12-05 14:25:34
【问题描述】:

我正在尝试实现发布功能并希望从 php 视图中选择消息和图像。我的消息功能运行良好。但是在图片上传时我收到一个错误You did not select a file to upload。这是我的控制器功能

function post_func()
{
    session_start();
    echo $post_message=$_POST['post'];
    echo $share_with=$_POST['share_with'];
    echo $image=$_POST['image'];
    if($image==null){
        echo "<br/>no image<br/>";  
    }
    else{
        ////////////////////////////////////////////////////////////////////////////////////////

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


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


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



            if ( ! $this->upload->do_upload())
            {
                $error = array('error' => $this->upload->display_errors());

                echo "<br/>";
                echo $this->upload->display_errors();
                echo "<br/> image error<br/>";
            }
            else
            {

                echo "<br/> reached <br/>";
                session_start();
                $this->membership_model->insert_images($this->upload->data(),$email);
                $data = array('upload_data' => $this->upload->data());

                echo "<br/ problem<br/>";
            }




        ////////////////////////////////////////////////////////////////////////////////////////
    }
    $public;
    if($share_with=="public"){
        echo "1";
        $public=true;
    }else{
        echo "0";
        $public=false;
    }echo "-----------------------------<br/>";
    echo $user=$this->session->userdata('user_identification');
    $data = array 
            (
                'userid'=> $user,
                'public' => $public,
                'message' => $post_message,
                'picname' => "None"
            );
    $this->load->model('membership_model');
    $this->membership_model->add_message($data);
    echo "</br>";
    echo $user=$this->session->userdata('user_identification');
}

这是我的看法。

<?php echo form_open('search/post_func');?>

<!--<form id="loginForm" action="../search/post_func" method="post" enctype="multipart/form-data" >-->
<div id="your_post">
<div id="post_image">
<img   id ="post_img" src="<?php  echo $this->config->item('base_url'); ?><?php echo '/application/css/'. $img ?>"/>
</div>
<textarea name="post" rows="5" cols="30" placeholder="Share an update..." id="post_text" rows="2" value=""></textarea>

//other view items
            <?php
    echo form_close();
    ?> 

请帮帮我

【问题讨论】:

标签: php codeigniter file-upload controller


【解决方案1】:

变化:

$this->upload->do_upload()

到这里:

$this->upload->do_upload('my_file_input_name')

它会工作的! :)

【讨论】:

  • 我像这样改变了,但是得到了You did not select a file to upload.,我在接受的答案中上传了我的问题,你会看到吗?
  • @151291 如果您的表单正在发送,请在 firefox/chrome 控制台(在“网络”选项卡中)检查。
  • 是的,它正在发送这样的 POST 并重复。 move_uploaded_file($_FILES['file']['tmp_name'],$config['upload_path'].$basename); 工作但 $this-&gt;upload-&gt;do_upload('test') 不工作。
  • 你必须将'test'替换为HTML中文件元素的名称,让我知道。
  • 确定了!但想知道为什么?我之前使用过空参数
【解决方案2】:

变化:

<?php echo form_open_multipart('search/post_func');?>

【讨论】:

  • 我已经在这段代码''中定义了我的输入名称image,即使它说@987654323 @@尼尔兹
  • 我已经添加了&lt;?php echo form_open_multipart('search/post_func');?&gt;,但它仍然给出了错误。
  • $this-&gt;upload-&gt;do_upload() 需要 field_name,您没有提供,这意味着默认情况下它将采用 user_file。您的表单中有&lt;input type="file" name="user_file"&gt; 吗?另一件事是你不要像echo $image=$_POST['image']; 这样的文件,而是这样做:echo $image=$_FILES['image'];。希望对您有所帮助。
  • 上帝保佑你,亲爱的
  • 每次我都会忘记这一点。我已经访问过这个问题超过 3 次了...
【解决方案3】:

您的表单类型应为“多部分”
将您的表单标签更改为:

 <?php echo form_open_multipart('search/post_func');?>

【讨论】:

  • 我在接受的答案中添加了我的问题,你能帮帮我吗?
【解决方案4】:
enctype='multipart/form-data'

你应该把之前的属性放在表单标签中

$this->upload->do_upload('file_name')

将输入标记文件名传递到控制器中的前一行

<input type="file"   name ="file_name" >

【讨论】:

    【解决方案5】:

    示例代码是

        $config['upload_path'] = FCPATH.'upload/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '100';
        $config['max_width']  = '1024';
        $config['max_height']  = '768';
    
        $this->load->library('upload');
                $this->upload->initialize($config);  
    
        if ( ! $this->upload-> do_upload('userfile'))
        {
    
                       $errors = $this->upload->display_errors();
                       $this->session->set_flashdata('error', $errors);
                           redirect('ur_link');
        }
        else
        { 
                                $data = array('upload_data' => $this->upload->data());
                                $fullpath= $data['upload_data']['full_path'];
                                $file_name = $data['upload_data']['file_name'];
                        }
        }
    

    【讨论】:

    • $this->upload-> do_upload('userfile') // userfile 是你的文件名
    【解决方案6】:

    这样做:

    if(isset($_FILES['profile_pic']['name']) && !empty($_FILES['profile_pic']['name'])){
    
        $config['upload_path']= './assets/img/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = 10000;
        $config['max_width'] = 10000;
        $config['max_height'] = 10000;
    
        $this->load->library('upload', $config);
    
        if ( ! $this->upload->do_upload('profile_pic'))
        {
            $error = array('error' => $this->upload->display_errors());
    
            print_r($error);
            exit;
        }
        else
        {
            $data = array('upload_data' => $this->upload->data());
    
            if(!empty($data)){
    
                $img1 =  $data['upload_data']['file_name'];                           
    
            }
        }
    }
    
    $insert_data['profile_pic'] = $img1;
    

    【讨论】:

    • 这个看起来主要是代码你能补充一些信息吗
    【解决方案7】:

    我发现发生此问题的另一个原因。如果您在加载库后忘记初始化:

    $this->load->library('upload', $config);
    
    $this->upload->initialize($config); //Make this line must be here.
    

    希望对你有所帮助。

    【讨论】:

    • 我尝试了这里的所有答案,但仍然出现You did not select a file to upload. 之类的错误,但$_FILES['file']['name'] 工作正常。
    • 您为什么不发布自己的问题,以便我们找到解决您问题的方法。
    • 我的问题是一样的,但错误是不同的......好吧,如果我没有得到我会发布我的问题..move_uploaded_file($_FILES['file']['tmp_name'],$config['upload_path'].$basename); 工作但do_upload 不工作。
    【解决方案8】:

    所以请注意,我正在执行 mysql 上传导入,并且收到“您没有选择要上传的文件”消息。原来我的导入 sql 文件有额外的列导致失败并返回此错误消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 2014-03-05
      • 2018-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多