2

PCLZIPは優れたライブラリですが、残念ながら文書化が不十分です。ZipArchiveが無効になっている(またはphpバージョンがサポートされていない)サーバーもサポートするために使用しています

アップロードしたファイルを1つずつZIPアーカイブに追加する機能があります。アーカイブが存在しない場合はアーカイブを作成し、アーカイブが存在する場合は新しいファイルを追加するだけです。

私が抱えている問題は、アーカイブからのコメントに基づいたTXTファイルを追加する機能にあります。(この関数は、以前に準備されたコメントを読み取り、文字列からTXTファイルを作成し、アーカイブに挿入する必要があります。)

文字列からファイルを上書きする関数が見つからないようです(または使用方法がわかりません)。

で作成できます PCLZIP_ATT_FILE_NAMEが、どういうわけか、関数を実行する.txtと、アーカイブにファイルを追加するたびに(既存のファイルを上書きするのではなく)新しいファイル(同じファイル名で!)が作成されます-使用しようとしましたPCLZIP_ATT_FILE_NEW_FULL_NAME-しかし、上書きする必要のあるファイルのパラメータをどこに指定するかがわかりません。

関数はここにあります:(長い場合は申し訳ありません..)

    $archive = new PclZip($zipname);

        if (!file_exists($zipname)){  //The Archive already exists - let´s just ADD new files.


            $comment = $comment_head . $comment_add ;

            $string_content = $comment;

            $v_list = $archive->create($file,
                                        PCLZIP_OPT_ADD_PATH, $sitename,
                                        PCLZIP_OPT_COMMENT, $comment,
                                        PCLZIP_OPT_REMOVE_ALL_PATH);

                                        $prop = $archive->properties();
                                        $prop = $prop['comment'];
                                        if (!$prop) {$prop = $comment;}

            $list = $archive->add(array(
                                   array( 
                                   PCLZIP_ATT_FILE_NAME => $string_file,
                                   PCLZIP_ATT_FILE_CONTENT => $prop,
                                   PCLZIP_ATT_FILE_NEW_FULL_NAME => $string_file
                                         )
                                   )
                                   );


                      if ($v_list == 0) {
                        die("Error : ".$archive->errorInfo(true));
                      }


        } else { 

// No Archive already exists - Create with new file .

        $comment_add =  $meta['file'] . PHP_EOL . PHP_EOL ;/*.$comment_foot*/ ;

        $b_list = $archive->add($file,
                                    PCLZIP_OPT_ADD_PATH, $sitename,
                                    PCLZIP_OPT_ADD_COMMENT, $comment_add,
                                    PCLZIP_OPT_REMOVE_ALL_PATH);

                                $prop = $archive->properties();
                                        $prop = $prop['comment'];
                                        if (!$prop) {$prop = $comment;}

            $list_6 = $archive->add(array(
                                   array( PCLZIP_ATT_FILE_NAME => $string_file,
                                        PCLZIP_ATT_FILE_CONTENT => $prop
                                         )
                                   )
                                   );

                  if ($b_list == 0) {
                    die("Error : ".$archive->errorInfo(true));
                  }

      }

つまり、PCLzipを使用して(ファイルからではなく)文字列からファイルを上書きする方法を知っている人はいますか?

4

1 に答える 1

1
$archive = new PclZip("archive.zip");
$v_filename = "new_file.txt";
$v_content = "This is the content of file one\nHello second line";
$list = $archive->create(array(
                               array( PCLZIP_ATT_FILE_NAME => $v_filename,
                                      PCLZIP_ATT_FILE_CONTENT => $v_content
                                     )
                               )
                         );
if ($list == 0) {
  die("ERROR : '".$archive->errorInfo(true)."'");
}  

http://www.phpconcept.net/pclzip/news/3-pclzip-26

于 2013-10-05T23:03:19.157 に答える