我有一个表单,人们在其中选择文件,在文本框中键入文件名,然后单击保存,它应该将文件保存在服务器上。
我希望它工作的方式是:
1)在数据库中插入一行。2)保存文件,文件名是db的row_id。(ex.38.pdf) 3) 使用文件扩展名更新 db。
我不知道如何安排我的代码以便发生这种情况。我可以插入行,但为了设置 file_name(保存文件的名称),我需要扩展名。获取扩展的唯一方法是加载库。为了加载库,我需要设置 $config 数组(其中之一是 file_name)。
很迷茫。可能很明显,但也许我已经盯着它很久了。感谢您的帮助,祝您好运。顺便说一句,我正在使用 codeigniter 框架。
(截至目前,此代码已损坏。我已经搞砸了大约一个半小时。这正是我最近尝试过的)
表单指向的上传函数 ---------
public function do_upload () {
$fileName = $this->input->post('name');
$scopeId = $this->session->userdata('scopeId');
$user = 'user';
$date = date('n/d/Y', time());
$query = $this->db->query('
INSERT
INTO scope_uploads
VALUES(
NULL,
'. $scopeId .',
"'. $fileName .'",
"'. $user .'",
"'. $date .'",
"N/A"
)
');
$lastId = $this->db->insert_id();
$this->load->library('upload');
$fileData = $this->upload->data();
$fileExt = $fileData['file_ext'];
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|pdf';
$config['file_name'] = ''. $lastId .'.'. $fileExt .'';
$config['max_size'] = '1000';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload', $config);
$query2 = $this->db->query('
UPDATE scope_uploads
SET extension = "'. $fileExt .'"
WHERE id = '. $lastId .'
');
$error = '';
if (!$this->upload->do_upload('userfile')) {
$error = array('error' => $this->upload->display_errors());
echo 'error';
} else {
$data = array('upload_data' => $this->upload->data());
}
if ($error == '') {
redirect(site_url('headquarters/scopeSummary'));
} else if ($error !== '') {
$deleteLastRow = $this->db->query('
DELETE
FROM scope_uploads
WHERE id = '. $query->insert_id() .'
');
}
print_r($error);
}