ファイルを選択し、テキスト ボックスにファイル名を入力して [保存] をクリックすると、ファイルがサーバーに保存されるフォームがあります。
私がそれを機能させたい方法は、次のことです。
1) データベースに行を挿入します。2) ファイルの名前が db の row_id であるファイルを保存します。(ex.38.pdf) 3) db をファイル拡張子で更新します。
それが起こるようにコードを配置する方法がわかりません。行を挿入することはできますが、file_name (ファイルが保存される名前) を設定するには、拡張子が必要です。拡張機能を取得する唯一の方法は、ライブラリをロードすることです。ライブラリをロードするには、$config 配列 (そのうちの 1 つは file_name) を設定する必要があります。
非常に混乱。明らかかもしれませんが、多分私はそれを長い間見つめてきました. 助けてくれてありがとう、そしてそれを理解して頑張ってください。ところで、codeigniter フレームワークを使用しています。
(現在、このコードは壊れています。約 1 時間半いじっています。これは私が最近試したものです)
フォームの送信先のアップロード機能 ---------
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);
}