我有一个核心PHP脚本,允许我上传文本文件并将其数据导入sql数据库。
我想使用 Codeigniter 做同样的事情。当我把代码放在CI应用程序中时,我试过屏幕显示空白屏幕。
以下是我用于上传文件和导入文件的核心PHP脚本:
<?php
include_once 'dbconfig.php';
if(isset($_POST['btn-upload']))
{
$file = rand(1000,100000)."-".$_FILES['file']['name'];
$file_loc = $_FILES['file']['tmp_name'];
$file_size = $_FILES['file']['size'];
$file_type = $_FILES['file']['type'];
$folder="uploads/";
$location =$_FILES['file'];
// new file size in KB
$new_size = $file_size/1024;
// new file size in KB
// make file name in lower case
$new_file_name = strtolower($file);
// make file name in lower case
$final_file=str_replace(' ','-',$new_file_name);
if(move_uploaded_file($file_loc,$folder.$final_file))
{
$sql="INSERT INTO tbl_uploads(file,type,size) VALUES('$final_file','$file_type','$new_size')";
mysqli_query($connection,$sql);
$handle = fopen("c:/wamp/www/codeigniter/uploads/$file", "r");
if ($handle) {
while (($line = fgets($handle)) !== false) {
$lineArr = explode("\t", "$line");
//var_dump($lineArr); // to make sure array is ok
// instead assigning one by onb use php list -> http://php.net/manual/en/function.list.php
list($emp_id, $date_data, $abc, $def, $entry, $ghi) = $lineArr;
// and then insert data
mysqli_query($connection,"INSERT INTO `daily_data2` (emp_id, date_data, abc, def, entry, ghi)
VALUES ('$emp_id', '$date_data', '$abc', '$def', '$entry', '$ghi')");
}
fclose($handle);
}
?>
<script>
alert('successfully uploaded');
window.location.href='index.php?success';
</script>
<?php
}
else
{
?>
<script>
alert('error while uploading file');
window.location.href='index.php?fail';
</script>
<?php
}
}
?>
我不知道如何在Codeigniter中执行此操作。请指导我
Ci表格:
<h2>Upload CSV To Import Users</h2>
<form method="post" action="<?php echo site_url('admin/attendance/upload');?>" enctype="multipart/form-data">
<input type="file" name="userfile" ><br><br>
<input type="submit" name="submit" value="UPLOAD" class="btn btn-primary">
</form>
答案 0 :(得分:2)
严重的是,有了CodeIgniter的文件上传类,它是免费的,强大的,错误捕获和soooo简单!
请见:
https://ellislab.com/codeigniter/user-guide/libraries/file_uploading.html
我真诚地希望你能使用它:)
答案 1 :(得分:1)
在控制器中
## include_once 'dbconfig.php';
## Use defult Databse connection
if(isset($_POST['btn-upload']))
{
$file = rand(1000,100000)."-".$_FILES['file']['name'];
$file_loc = $_FILES['file']['tmp_name'];
$file_size = $_FILES['file']['size'];
$file_type = $_FILES['file']['type'];
$folder="uploads/";
$location =$_FILES['file'];
$new_size = $file_size/1024;
$new_file_name = strtolower($file);
$final_file=str_replace(' ','-',$new_file_name);
$new_name = $folder.$final_file;
if(!move_uploaded_file($final_file,$new_name)) # Change This
echo "Error in Upload";
}
else{
$file_uploded = base_url().'uploads/'.$file;
if (!file_exists($file_uploded)) {
echo "File Not exist";
}
else
{
$handle = fopen($file_uplod_path, "r") or die("file cannot open");
if ($handle) {
while (($line = fgets($handle)) !== false)
{
$lineArr = explode("\t", "$line");
$result = $this->model_name->insert_file_content($lineArr) ;
}
if (fclose($handle)) {
redirect(base_url());
}
}
else{
echo "file cannot open";
}
}
}
}
else
{
echo "Moveing failed";
}
}
在模型中
public function insert_file_details($final_file,$file_type,$new_size)
{
$data = array(
'file' => $final_file,
'type' => $file_type,
'size' => $new_size,
);
if (!$this->db->insert('table_name', $data)) {
return false;
}
else{
return true;
}
}
# inserting file in to DB
public function insert_file_content($lineArr)
{
$data = array(
'emp_id' => $lineArr[0],
'date_data' => $lineArr[1],
'abc' => $lineArr[2],
'def' => $lineArr[3],
'entry' => $lineArr[4],
'ghi' => $lineArr[5],
);
$this->db->insert('table_name', $data);
}