0

次のコードで codeigniter フレームワークを使用して圧縮ファイルをアップロードしようとしています

function do_upload()
{
    $name=time();
    $config['upload_path'] = './uploadedModules/';
    $config['allowed_types'] = 'zip|rar';
    $this->load->library('upload', $config);

    if ( ! $this->upload->do_upload())
    {
        $error = array('error' => $this->upload->display_errors());

        $this->load->view('upload_view', $error);
    }
    else
    {
        $data = array('upload_data' => $this->upload->data());

        $this->load->library('unzip');

    // Optional: Only take out these files, anything else is ignored
    $this->unzip->allow(array('css', 'js', 'png', 'gif', 'jpeg', 'jpg', 'tpl', 'html', 'swf'));

     $this->unzip->extract('./uploadedModules/'.$data['upload_data']['file_name'], './application/modules/'); 



        $pieces = explode(".", $data['upload_data']['file_name']);
        $title=$pieces[0];
        $status=1;
        $core=0;
        $this->addons_model->insertNewModule($title,$status,$core);

    }
}

しかし、主な問題は、抽出関数が呼び出されると、zip を抽出しますが、結果は空のフォルダーになることです。この問題を克服する方法はありますか?

4

6 に答える 6

0

これを試して :

<?php
exec('unzip filename.zip');
?>
于 2012-07-04T09:03:01.360 に答える
0

うーん..、アップロードした zip ファイルの間違ったパスを設定したか、宛先パス ('./application/modules/') が間違っていると思います。

これを試して :

$this->unzip->extract($data['upload_data']['full_path'], './application/modules/');

これを使用します -> $data['upload_data']['full_path']、アップロードされたファイルの実際のパスであることを確認します。

それが役に立てば幸い :)

于 2012-07-04T09:50:40.743 に答える
0

同じ問題に数分前に直面しました。注意深く観察すると、zipファイルをコピーして、プログラムファイル(.php)を含むフォルダーに貼り付けてください。

ファイルは一時フォルダーに保存されていないと思います。

if(preg_match("/.(zip)$/i", $fileName))
{
$moveResult= move_uploaded_file($fileTmpLoc, $fileName);

if($moveResult == true)
{ 
     $zip = new ZipArchive;

     $res = $zip->open($fileName);

    if($res==TRUE)
        {  
            $zip->extractTo($path.$fileName);

            echo "<pre>";
            print_r($zip);


            $zip->close();
        } else {
         echo 'failed';
        }

}

unlink($fileName); // Remove the uploaded file from the PHP temp folder
//exit();
}` 
于 2012-10-01T09:50:10.343 に答える