Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用自定义函数在Codeigniter中上载文件_Php_Codeigniter_File Upload - Fatal编程技术网

Php 如何使用自定义函数在Codeigniter中上载文件

Php 如何使用自定义函数在Codeigniter中上载文件,php,codeigniter,file-upload,Php,Codeigniter,File Upload,在使用框架之前,我做了一个自定义函数,现在我想再次使用它。当我尝试使用自定义函数上载图像时出现问题。它显示错误未定义索引:[字段名称] 大多数人使用CI库和CI上载函数do_upload(),但我想使用我自己的函数,因为它也会创建更小的图像用作拇指 我3天前开始使用CI,但仍然不知道如何更改任何可以使$\u文件[]正常工作的内容 观点: <form action="path/to/controller/method" method="post" enctype="multipart/f

在使用框架之前,我做了一个自定义函数,现在我想再次使用它。当我尝试使用自定义函数上载图像时出现问题。它显示错误
未定义索引:[字段名称]

大多数人使用CI库和CI上载函数
do_upload()
,但我想使用我自己的函数,因为它也会创建更小的图像用作拇指

我3天前开始使用CI,但仍然不知道如何更改任何可以使
$\u文件[]
正常工作的内容

观点:

  <form action="path/to/controller/method" method="post" enctype="multipart/form-data">
    <input type="file" name="fupload">

  </form>
我已经将自定义函数文件放入
application\helpers\
中。我应该显示自定义函数文件和模型文件吗

我已经更改了
public$allowed_types='*'

更新

模型

   public function put_file($data){
       //BUAT FILE
    $lokasi_file = $data['location_file'];
    $tipe_file = $data['type_file'];
    $nama_file = $data['name_file'];
    $acak = rand(1,99);
    $nama_file_unik = $acak.$nama_file;

    UploadImage($nama_file_unik); // this is my custom function

     $sql="INSERT INTO produk(gambar)VALUES (?)";
    $query=$this->db->query($sql,array($nama_file_unik));
    if($query)
    {
        echo "BERHASIL";
    }
    else
    {
        echo "GAGAL";
    }

   }
更新新内容 我最终能够使用
$\u文件
,我需要在控制器构造函数中加载库

现在的新问题是,即使在我自己定制的函数中使用
do\u upload()
函数,也没有上传文件

这是我定制的功能

   function UploadImage($fupload_name){

// SET DATA FILE NYA
 $config['file_name'] = $fupload_name;
 $config['upload_path'] = 'http://localhost/mobileapp/assets/gambar/';

var_dump($config['upload_path']);

//load the upload library
$CI =& get_instance();
$CI->load->library('upload',$config);

//Upload the file
  if( !($CI->upload->do_upload('fupload'))){
     $error = $CI->upload->display_errors();
 }else{
     $file_data = $CI->upload->data();
 }
}
现在,正如您在上面看到的,我正在尝试使用
$config['file\u name']=$fupload\u name;将
文件名
更改为一个新的随机生成的名称(在模型中完成)并创建一个新对象,因为显然我需要这样做来加载库并使用
do\u upload()
方法


但我还是不能用。现在我又被卡住了

$\u文件
数组从控制器传递到模型函数,在配置数组中添加新的文件名并直接使用

控制器功能:

public function input_file(){
    $this->load->model('input_model');
    $this->input_model->put_file($_FILES); // pass $_FILES Array
}
public function put_file($files){
    $config['allowed_types'] = '*';
    $acak = rand(1,99);
    $config['file_name'] = $acak.$files['fupload']['name'];
    $this->load->library('upload',$config);
    $data = array(
       'location_file' => $files['fupload']['tmp_name'],
       'type_file' => $files['fupload']['type'],
       'name_file' => $files['fupload']['name']
    );
    if (!$this->upload->do_upload('fupload')) { // pass field name here
        $this->upload->display_errors('<p>', '</p>');
    } else {
       $sql="INSERT INTO produk(gambar)VALUES (?)";
       $query=$this->db->query($sql,array($nama_file_unik));
       if($query) {
          echo "BERHASIL";
       } else {
          echo "GAGAL";
       }
    }
}
型号功能:

public function input_file(){
    $this->load->model('input_model');
    $this->input_model->put_file($_FILES); // pass $_FILES Array
}
public function put_file($files){
    $config['allowed_types'] = '*';
    $acak = rand(1,99);
    $config['file_name'] = $acak.$files['fupload']['name'];
    $this->load->library('upload',$config);
    $data = array(
       'location_file' => $files['fupload']['tmp_name'],
       'type_file' => $files['fupload']['type'],
       'name_file' => $files['fupload']['name']
    );
    if (!$this->upload->do_upload('fupload')) { // pass field name here
        $this->upload->display_errors('<p>', '</p>');
    } else {
       $sql="INSERT INTO produk(gambar)VALUES (?)";
       $query=$this->db->query($sql,array($nama_file_unik));
       if($query) {
          echo "BERHASIL";
       } else {
          echo "GAGAL";
       }
    }
}
public函数put\u文件($files){
$config['allowed_types']='*';
$acak=兰特(1,99);
$config['file_name']=$acak.$files['fupload']['name'];
$this->load->library('upload',$config);
$data=数组(
'location_file'=>$files['fupload']['tmp_name'],
'type_file'=>$files['fupload']['type'],
'name_file'=>$files['fupload']['name']
);
如果(!$this->upload->do_upload('fupload'){//在此处传递字段名
$this->upload->display_错误(“”,“

”); }否则{ $sql=“插入到produk(gambar)值(?); $query=$this->db->query($sql,array($nama_file_unik)); 如果($query){ 回声“贝哈西尔”; }否则{ 回声“嘎嘎”; } } }
配置中的上载路径必须是绝对路径或相对路径,而不是url。 所以你可以这样做():

或者这个:

$config['upload_path'] = FCPATH . 'uploads/';

注意:FCPATH是index.php文件夹的绝对路径。

input\u model
中显示
put\u file
函数以获取实际问题。CI中的
Upload.php
文件也使用
$\u FILES[]
但当我使用它时,它会显示
未定义的索引
。。。。为什么?现在编辑@RohanKumarok。但是这样,我将使用
do\u upload()
函数而不是我自己的函数?没关系,我想我还是可以用我自己的功能对不起。仍然
未定义索引:fupload
在使用
echo var\u dump($\u FILES)后,我无法传递
$\u文件
或其他东西我得到
数组(0){}
为什么它是空的?当我
echo var\u dump($\u POST)时我得到这个数组中的文件名,因为如果您有有效的操作并正确提交表单,stringIt必须打印数组。在浏览器控制台中检查post参数和url.0。我以一种形式提交了
type=“text”
type=“file”
,并使用
var\u dump($\u POST)
var\u转储($\u文件)
我得到了
POST
的数组结果和
文件的空数组
我认为提交操作是有效的,它正确地提交了我的表单url不是绝对路径吗?我将尝试使用相对路径。我的
assets/gambar
与index.php位于同一目录下,因此我的相对路径应该是
./assets/gambar/
/assets/gambar
?使用以下命令:
$config['upload_path']='./assets/gambar/