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/代码>