我在使用框架之前创建了一个自定义函数,我现在想再次使用它。当我尝试使用自定义函数上传图像时出现问题。它说错误undefined index : [the field_name]
。
大多数人使用CI库和CI上传功能do_upload()
,但我想使用自己的功能,因为它还会创建较小的图像以便用作拇指。
我3天前开始使用CI,但仍然不知道如何更改任何可以使$_FILES[]
正常工作的内容。
观点:
<form action="path/to/controller/method" method="post" enctype="multipart/form-data">
<input type="file" name="fupload">
</form>
控制器:
public function __construct(){
parent::__construct();
$this->load->helper('fungsi_thumb'); // this is the custom function
$config['allowed_types'] = '*';
$this->load->library('upload',$config);
}
public function input_file(){
$data = array(
'location_file' => $_FILES['fupload']['tmp_name'],
'type_file' => $_FILES['fupload']['type'],
'name_file' => $_FILES['fupload']['name']
);
$this->load->model('input_model');
$this->input_model->put_file($data);
}
我已将自定义函数文件放在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";
}
}
更新
我终于能够使用$_FILES
,我需要在控制器构造函数中加载库 。
现在新问题是即使在我自己定制的函数中使用do_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();
}
}
现在如上所示,我正在尝试使用file_name
将$config['file_name'] = $fupload_name;
更改为新的随机生成的名称(在模型中完成)并创建一个新对象,因为显然我需要要执行此操作以加载库并使用do_upload()
方法。
但我仍然无法使用它。现在我又被卡住了
答案 0 :(得分:1)
将$_FILES
数组从控制器传递给模型函数,在配置数组中添加新文件名并直接使用do_upload(),
控制器功能:
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";
}
}
}
答案 1 :(得分:1)
upload_path 必须是绝对路径或相对路径,而不是网址。 所以你可以这样():
$config['upload_path'] = './uploads/';
或者这个:
$config['upload_path'] = FCPATH . 'uploads/';
注意:FCPATH是index.php文件夹的绝对路径。