【问题标题】:codeigniter upload form not workingcodeigniter上传表单不起作用
【发布时间】:2017-02-05 20:44:18
【问题描述】:

我从未使用过代码点火器,我正在尝试制作一个包含图像上传输入的快速管理表单。我的管理表单已启动,并且有一个我可以访问的路线/网址,但保存功能无法正常工作。单击提交按钮时出现 404 错误。

我认为问题在于views/admin/Dashboard.php 中的form_open_multipart('dashboard_save/do_upload') 行。我认为没有达到 do_upload 功能。有什么想法我哪里出错了吗?

*新细节:我可以使用索引函数通过 form_open_multipart('dashboard_save') 访问我的控制器...但我无法访问任何其他函数,例如 form_open_multipart( 'dashboard_save/upload') 使用控制器dashboard_save中的上传功能。

控制器

controllers/admin/Dashboard_save.php

<?php

   class Dashboard_save extends CI_Controller
   {

      public function __construct()
      {
         parent::__construct();
         $this->load->helper(array('form', 'url'));
      }

      public function index()
      {
        // die('got here 2');
         $this->load->view('admin/dashboard_view', array('error' => ' ' ));
      }

      public function do_upload()
      {
        // die('got here!!');
         $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);

         if ( ! $this->upload->do_upload('userfile'))
         {
            $error = array('error' => $this->upload->display_errors());
            $this->load->view('dashboard_view', $error);
         }

         else
         {
            $data = array('upload_data' => $this->upload->data());
            $this->load->view('dashboard_save', $data);
         }
      }
   }
?>

观看次数

views/admin/Dashboard.php

<?php defined('BASEPATH') OR exit('No direct script access allowed');?>
<!DOCTYPE html>
<body>
  <div id="main-wrapper">
    <div id="main-container">
      <div id="main-body">
        <div id='main-form-body'>
          <p>Configure front end here.</p>
          <div id='admin-form-container'> 
            <?php echo form_open_multipart('dashboard_save/do_upload');?>
            <form id="admin-form" method="" action="">
              <div class='form-field'>
                <div class='label-wrapper'><label for='main_img'>Main Image</label></div>
                <input type = "file" name = "userfile" size = "20" />
              </div>
            <div class='form-field'>
              <button id="submit-search" type="submit" class="button" title="Submit" value = "upload">Submit</button>
            </div>
          </form>
        </div>
      </div>
    </div>
  </div>
</body>
</html>

views/admin/Dashboard_save.php

<html>
   <head><title>Dashboard Save</title></head>
   <body>
      <h3>testing dashbord submit</h3>
      <ul>
         <?php foreach ($upload_data as $item => $value):?>
         <li><?php echo $item;?>: <?php $value;?></li>
         <?php endforeach; ?>
      </ul>
      <p><?php echo anchor('upload', 'Upload Another File!'); ?></p>
   </body>
</html>

【问题讨论】:

  • 在控制台中打开网络选项卡。然后你可以看到你应该如何设置路径

标签: forms codeigniter file-upload


【解决方案1】:

您好,首先检查您的 do_upload 函数是否被调用。如果是,请检查您是否已加载到上传库中。如果不是这样,请上传库而不是使用下面的代码

<?php defined('BASEPATH') OR exit('No direct script access allowed');?>
<!DOCTYPE html>
<body>
  <div id="main-wrapper">
    <div id="main-container">
      <div id="main-body">
        <div id='main-form-body'>
          <p>Configure front end here.</p>
          <div id='admin-form-container'>        
            <form id="admin-form" method="post" action="<?php echo base_url()?>/dashboard_save/do_upload" enctype="multipart/form-data">
              <div class='form-field'>
                <div class='label-wrapper'><label for='main_img'>Main Image</label></div>
                <input type = "file" name = "userfile" size = "20" />
              </div>
            <div class='form-field'>
              <button id="submit-search" type="submit" class="button" title="Submit" value = "upload">Submit</button>
            </div>
          </form>
        </div>
      </div>
    </div>
  </div>
</body>
</html>

【讨论】:

  • 您好,我正在尝试通过 multipartform 调用 form_open_multipart('dashboard_save/do_upload') 来调用 do_upload; --dashboard_save 是控制器,do_upload 是控制器内部的函数。我试图用这一行加载上传库 $this->load->library('upload', $config);我需要安装一个实际未包含在核心中的库才能使这条线正常工作吗?
  • 当您在上传任何图像后遇到 404 错误时调用 do_upload 函数???????
【解决方案2】:

您已经使用了两次form 标签。这就是为什么它取最后一个并显示错误的原因。删除一个 FORM 标签。这是您修改后的视图文件代码

<?php defined('BASEPATH') OR exit('No direct script access allowed');?>
<!DOCTYPE html>
<body>
  <div id="main-wrapper">
    <div id="main-container">
      <div id="main-body">
        <div id='main-form-body'>
          <p>Configure front end here.</p>
          <div id='admin-form-container'> 
            <?php $attributes = array('id' => 'admin-form'); echo form_open_multipart('dashboard_save/do_upload', $attributes);?>
              <div class='form-field'>
                <div class='label-wrapper'><label for='main_img'>Main Image</label></div>
                <input type = "file" name = "userfile" size = "20" />
              </div>
            <div class='form-field'>
              <button id="submit-search" type="submit" class="button" title="Submit" value = "upload">Submit</button>
            </div>
          <?php echo form_close();?>
        </div>
      </div>
    </div>
  </div>
</body>
</html>

没有测试它。我已删除您手动编写的 form 打开和关闭标签,同时仅使用 form_open_multipart()form_close() 完成相同的任务

【讨论】:

  • 感谢这次修订!但是我仍然看到 404。
  • 抱歉,我在form_close() 函数之前错过了echo。你现在可以测试了。代码再次修改
  • 您好,再次感谢!不幸的是,我仍然看到 404。该 url 是我的 baseurl/admin 来访问我的表单。保存功能不可访问 url。
  • 显示您在浏览器中看到的 URL。并确保在 config.php 中为 base_url 设置正确的 URL。也写你在.htaccess里的代码
  • 我认为我的 url 还可以,我可以让我的管理路由器正常工作。所以 www.myurl/admin 可以完美地访问我的表单。问题似乎是“如何在我的控制器中正确调用 do_upload()?” -- 就像我说的,这是我对 codeiginter 的第一眼,所以我很容易错过一个非常基本的项目 o_o
猜你喜欢
  • 2013-06-09
  • 2017-03-07
  • 1970-01-01
  • 2014-07-22
  • 2013-03-17
  • 2013-12-09
  • 2018-02-19
  • 2017-12-27
  • 2015-04-26
相关资源
最近更新 更多