bugfix> php > 投稿

圧縮する特定のファイルがあり、それらのいくつかはアラビア語の名前を持っています。 私のPHPバージョンは7.2.18で、Codeigniter 3.1フレームワークを使用しています。

実際のファイル名:كلمةالعينة。docx 圧縮ファイル名:+â+ä+à+¬_+º+ä+ ¦ +è+å+¬.docx

public function generate_zip() {
        $this->load->library('zip');
        $zip_files = $this->document_model->get_documents();
        foreach ($zip_files as $zip_file) {     
            $this->zip->read_file('uploads/documents/' . $zip_file->document_file_name);
        }
        $this->zip->download('temp.zip');
    }

回答 1 件
  • こんにちは、以下のコードで試してください。

    /* creates a compressed zip file */
    function create_zip($files = array(),$destination = '',$overwrite = false) {
        //if the zip file already exists and overwrite is false, return false
        if(file_exists($destination) && !$overwrite) { return false; }
        //vars
        $valid_files = array();
        //if files were passed in...
        if(is_array($files)) {
            //cycle through each file
            foreach($files as $file) {
                //make sure the file exists
                if(file_exists($file)) {
                    $valid_files[] = $file;
                }
            }
        }
        //if we have good files...
        if(count($valid_files)) {
            //create the archive
            $zip = new ZipArchive();
            if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
                return false;
            }
            //add the files
            foreach($valid_files as $file) {
                $zip->addFile($file,$file);
            }
            //debug
            //echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;
            //close the zip -- done!
            $zip->close();
            //check to make sure the file exists
            return file_exists($destination);
        }
        else
        {
            return false;
        }
    }
    $files_to_zip = array(
        'عينة.txt',
    );
    //if true, good; if false, zip creation failed
    $result = create_zip($files_to_zip,'my-archive.zip');
    
    

あなたの答え