CodeIgniter には、最初に zip、rar ファイルをサーバーの場所にアップロードしてから抽出するモデル関数があります。
しかしその前に、ファイル構造を指定する必要があります
root folder
--- application
--admin
--controllers
--models
--views
--newsletter
--- system
---
---
---
これが私のモデル関数です
function add_newsletter()
{
if($_FILES['unextract']['name']=="")
{
return "Successfully added";
}
else if($_FILES['unextract']['name']!=''&&
($_FILES['unextract']['type']=='application/zip'
|| $_FILES['unextract']['type']=='application/x-zip'
|| $_FILES['unextract']['type']=='application/octet-stream'
|| $_FILES['unextract']['type']=='application/x-zip-compressed'
|| $_FILES['unextract']['type']=='application/x-rar-compressed'
|| $_FILES['unextract']['type']=='application/x-rar'
|| $_FILES['unextract']['type']=='application/rar'))
{
if(!file_exists('./application/admin/views/newsletter/'))
mkdir('./application/admin/views/newsletter/');
$file_name=md5(uniqid(rand())).$_FILES['unextract']['name']; // name of the file being changed with encryption, ex cd102453xz_ersnewsletter-1.zip
$image= 'application/admin/views/newsletter/'.$file_name;
$unxt="./".$image;
move_uploaded_file($_FILES['unextract']['tmp_name'],$unxt); //$_FILES['unextract']['tmp_name'] is equal to newsletter-1.zip
$zip = new ZipArchive;
if ($zip->open($unxt) === TRUE)
{
$folder=explode(".",$image);
$zip->extractTo('./'.$folder[0]); // $folder[0] stands for application/admin/views/newsletter/cd102453xz_ersnewsletter-1
$zip->close();
$data['msg']="Uploaded To database";
$title=$file_name;
$timestamp=time();
$data = array(
'newsletter_title' => $title,
'newsletter_timestamp' => $timestamp,
'newsletter_date'=>date('d/m/Y')
);
$msg=$this->insert('td_newsletter',$data,$timestamp);
if($msg=="done")
return "NewsLetter Added To System";
}
else
{
return "NewsLetter Not Added To System";
}
}
}
問題は、newsletter-1.zip のファイルがその場所に抽出されることです。
application/admin/views/newsletter/cd102453xz_ersnewsletter-1/newsletter-1/
に抽出する必要がありますが、
application/admin/views/newsletter/cd102453xz_ersnewsletter-1/
現在、ファイル構造は次のようになっています。
--application
--views
--newsletter
--cd102453xz_ersnewsletter-1
--newsletter-1
--screenshot.png
--index.html.php
--images/
私が望む望ましいファイル構造は
--application
--views
--newsletter
--cd102453xz_ersnewsletter-1
--screenshot.png
--index.html.php
--images/