草庐IT

php - Codeigniter 表单提交并上传文件

coder 2023-06-12 原文

我正在尝试编写一个代码,我可以在其中提交表单,在数据库中输入内容,同时执行文件上传并将其存储在我服务器内的文件夹中

文件夹位置称为上传,位于我网站的根目录

这是我的代码

Controller (site.php)

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

 class Site extends CI_controller {

public function __construct()
{
    parent::__construct();
    // Your own constructor code
    $this->load->model("site_model");
    $this->load->helper(array('form', 'url'));
} 

public function cmain($type,$page)
{
    $data = $this->_initialize_data(); //this is just a bunch of variables that im calling in another function
    $data['type'] = $type;
    $data['page'] = $page;
    $this->load->vars($data);
    $this->load->view('site/cmain');
}


public function m1()
        {               

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

            if(isset($_POST['m1']))
            {
                $suffix = $this->input->post("suffix");
                $fn = $this->input->post("fn");
                $mn = $this->input->post("mn");
                $ln = $this->input->post("ln");


                $newdata = array('suffix'=>$suffix,
                                'fn'=>$fn,
                                'mn'=>$mn,
                                'ln'=>$ln,

                                 );
                //this code is for the file upload
                           $config['upload_path'] = 'uploads';
                           $config['allowed_types'] = '*';

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

                           $data = array('upload_data' => $this->upload->data());
                 //end of file upload codes                 

                $this->db->insert('myself', $newdata); 

                redirect(base_url() . "site/complaint");    

            }

        }

查看(cmain.php)

<form action="<?php echo base_url();?>site/m1" name="details" id="details" method="post" enctype="multipart/form-data">
        <table class='table' width="100%">
            <tr>
            <td colspan='2'>
                <b><font color="#3B608C">Personal Information</font></b>
            </td>
        </tr>
        <tr>
            <td>
                Suffix  (e.g. Jr., III)
            </td>
            <td>
                <input type="text" name="suffix" id="suffix" value="">
            </td>
        </tr>
        <tr>
            <td>
                First Name*
            </td>
            <td>
                <input type="text" name="fn" id="fn" value="">
            </td>
        </tr>
        <tr>
            <td>
                Middle Name*
            </td>
            <td>
                <input type="text" name="mn" id="mn" value="">
            </td>
        </tr>
        <tr>
            <td>
                Last Name*
            </td>
            <td>
                <input type="text" name="ln" id="ln" value="">
            </td>
        </tr>
</table>

            <table>
        <tr>
        <td width="50%">
        Please attach documents pertinent to these complaints. <br>
        (Attach a zip file if more than one document)<br>
        </td>
        <td align="center">
        <input name = "userfile" type="file" class="input-xlarge" id = "userfile" />
        </td></tr>
        </table>
        <input type="submit" value="Submit Form" class="pull-right" id="submit" name="m1"/>
</form>

表单在数据库中正确发布,如后缀、fn、ln 和 mn 但是文件上传不起作用

我尽力遵循 codeigniter 文档示例,只得到我认为我需要的行

我做错了什么吗?

谢谢

最佳答案

终于搞定了

我用这个来上传文件

                //start of file upload code
                $config['upload_path'] = './uploads/';
                $config['allowed_types'] = '*';
                $this->load->library('upload', $config);
                $this->upload->do_upload();
                $data = $this->upload->data();
                //end of file upload code

并改变了

<form action="<?php echo base_url();?>site/m1" name="details" id="details" method="post" enctype="multipart/form-data">

进入

<?php echo form_open_multipart('site/c_upload');?>

关于php - Codeigniter 表单提交并上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14498474/

有关php - Codeigniter 表单提交并上传文件的更多相关文章

  1. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  2. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  3. ruby-on-rails - 在 Rails 中将文件大小字符串转换为等效千字节 - 2

    我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,

  4. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  5. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  6. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  7. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  8. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  9. Ruby 写入和读取对象到文件 - 2

    好的,所以我的目标是轻松地将一些数据保存到磁盘以备后用。您如何简单地写入然后读取一个对象?所以如果我有一个简单的类classCattr_accessor:a,:bdefinitialize(a,b)@a,@b=a,bendend所以如果我从中非常快地制作一个objobj=C.new("foo","bar")#justgaveitsomerandomvalues然后我可以把它变成一个kindaidstring=obj.to_s#whichreturns""我终于可以将此字符串打印到文件或其他内容中。我的问题是,我该如何再次将这个id变回一个对象?我知道我可以自己挑选信息并制作一个接受该信

  10. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

随机推荐