当前位置: 首页 > 知识库问答 >
问题:

Codeigniter上传文件为空

曹昊焱
2023-03-14

我上传文件有问题。我正在使用codeigniter框架和dropzone。js上传文件。

我认为:

<!-- START MODAL ADD FILE -->
   <!-- Modal -->
    <div class="modal fade" id="myModalFile" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h4 class="modal-title" id="myModalLabel">Nahrát Soubory</h4>
          </div>
          <div class="modal-body">           
                 <form action="<?php echo base_url("items/upload_agreement"); ?>" class="dropzone" method="POST" enctype="multipart/form-data">
                      <input type="hidden" name="agreement_dir_name" value="<?= $agreementDir;?>"  >
                      <input type="hidden" name="dir_name" value="<?= $customer_dir;?>"  >
                      <input type="hidden" name="customer_id" value="<?= $customerID;?>"  >
                      <input type="hidden" name="agreement_id" value="<?= $agreementID;?>"  > 
                    <div class="fallback">
                      <input name="fileToUpload[]" type="file" id="fileToUpload" multiple />
                    </div>               
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-danger btn-default" data-dismiss="modal">Zavřít</button>
            <input type="submit" class="btn btn-success btn-default" value="Nahrát" >
            </form>
          </div>

        </div>
      </div>
    </div>
<!-- END MODAL ADD FILE -->

控制器:

public function upload_agreement()
{
$customerDir = $this->input->post('dir_name');
$agreementDir = $this->input->post('agreement_dir_name');

$config['upload_path']          = "/www/Cesarlease2/leases/$customerDir/$agreementDir/";


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

                $data = array('upload_data' => $this->upload->data());
                $this->session->set_flashdata('success_msg', 'Soubor úspěšně nahrán');
                redirect("items/items/".$this->input->post('customer_id')."/".$this->input->post('agreement_id'));

}

问题是上传的文件返回为空:

数组(1){["upload_data"]=

我试图转储fileToUpload输入的POST值,也是空的。是不是我忽略了什么?

共有3个答案

洪开济
2023-03-14

您可以在加载之前尝试使用此选项-

$this->upload->initialize($config);
拓拔意
2023-03-14

您不必一次发送多个文件。事实上,这不是默认行为:http://www.dropzonejs.com/#config-上传多个。Dropzone可以通过parallelUploads点击相同的上传url,通过不同的请求同时处理多个文件。这就是我所使用的,它大大降低了后端代码的复杂性,并且没有额外的成本。因此,本质上,松开数组并将parallelUploads设置为您想要的任何内容。

您还需要使用函数do_upload()来实际处理上传。有关此的更多信息,请参阅CI文档。这很简单。

曾承弼
2023-03-14

使用codeigniter上载库时,默认情况下需要名为userfile的Post变量和miltipart表单。

您可以使用此代码打开miltipart表单

<?php echo form_open_multipart('controller/method');?>

这可能会替代您的

<?php echo form_close(); ?>

或者您可以继续使用

在您的控制器中,由于您使用了不同的后变量名称和数组,您应该编写一个循环代码,类似于

$i=0
foreach ($this->input-post('fileToUpload') as $p ){
    $data[$i] = array('upload_data' =>$this->upload->data($p));
    $i++;
}

这可能会起作用,而且您可能希望避免像配置路径中那样的完整路径,这将很难在部署时更改,并且您可能会有很多错误,相反,您可以使用类似

希望这有帮助,问候。

 类似资料:
  • 正如上面的问题所描述的,我正在尝试将一个文件从okhttp3上传到服务器。 我总是收到‘你没有选择一个文件上传’在我的方法从codeIgniter部分。 这是我的代码 Android: 服务器代码: 我做错了什么?谢谢!

  • 问题内容: 我想使用单个元素上传多个文件。所以我尝试这个例子。 使用CodeIgniter2.0上传多个文件(数组) 这是我的表格 这是我的控制器 这是我的文件上传方法 但它给每一次。有什么问题 问题答案: 我根据@Denmark 更改上传方法。

  • 我可以使用本地主机上的Codeigniter将文件完美地上传到uploads文件夹。然而,当我试图上传到服务器上时,我得到了这个错误。我尝试了不同类型的文件。txt。博士。xls。jpg等,这些都可以在本地主机上使用。我已经查看了MIME文件和图像/jpeg以及我需要的所有其他文件类型('doc'= 有人知道为什么不允许我上传文件吗。 控制器: 型号:

  • 问题内容: 我需要2个文本字段和1个文件上传。当我只需要文本字段时,一切都正常,但是当我需要文件上传时,即使我选择了一个文件,验证错误仍然会提示需要文件。有人知道我在做什么错吗?提前谢谢了。 //视图 //控制器 问题答案: 我找到了一种完全符合我想要的解决方案。 我变了 至

  • 问题内容: 控制器: 视图: Javascript: 但是,我得到一个错误 我试图从ajax发布数据和文件,但是它不起作用。我的问题是如何解决该错误?为什么控制器无法读取用户文件的内容? 谢谢 问题答案: 尝试将您的输入内容放入表单并提供id =’your_form_id表单,然后以这种方式在javascript中发送数据: 然后替换这行 有了这个 也设置以下:

  • 我想上传多输入文件。我尝试了下面的代码,但文件没有上传,我无法获得上传目录。 HTML 控制器 我也尝试用下面的代码获取上传的数据,但为什么总是出现错误?