2012-03-28 8 views
5

私はwordpressの添付ファイルからzipファイルを作成しようとしています。PHPはzipファイルを作成します(添付ファイルのワードプレスから)

は、私は、以下の両方の方法を試してみました - しかし、それは何になり(エラー・メッセージは、何のファイルが作成されていない) - 私はその事実ものをどのように考えていない私が間違っているの(再...)

これらの方法は通常のファイルでも失敗したため、Wordpressの添付ファイルは何か関係があります。どうして ? - >解答を見てください。

$files_to_zip = array();// create files array 
    //run a query 
    $post_id = get_the_id(); 
    $args = array(
     'post_type' => 'attachment', 
     'numberposts' => null, 
     'post_status' => null, 
     'post_parent' => $post_id 
    ); 

    $attachments = get_posts($args); 
    if ($attachments) { 
foreach ($attachments as $attachment) { 
     $files_to_zip [] = wp_get_attachment_url($attachment->ID); // populate files array 
     } 
    } 
    print_r($files_to_zip); 
    $zip = new ZipArchive; 
    $zip->open('file.zip', ZipArchive::CREATE); 
    foreach ($files_to_zip as $file) { 
     $zip->addFile($file); 
    } 
    $zip->close(); 

もこの方法:

$files_to_zip = array(); // create array 
//run a query 
$post_id = get_the_id(); 
$args = array(
    'post_type' => 'attachment', 
    'numberposts' => null, 
    'post_status' => null, 
    'post_parent' => $post_id 
); 
$zip = new ZipArchive; 
$zip->open('file.zip', ZipArchive::CREATE); 
$attachments = get_posts($args); 
if ($attachments) { 
    foreach ($attachments as $attachment) { 
    $zip->addFile(wp_get_attachment_url($attachment->ID)); 
    } 
} 

print_r($files_to_zip);// debug - return file names OK 

$zip->close(); 

どちらの方法でも、何も返されません。.. 任意の洞察力は理解されるであろう。

私は EDIT - $ files_to_zip

print_r($files_to_zip); 

Array ( 
[0] => http://localhost/testing_evn/wp-content/uploads/2012/03/wrt-62316IMAG0659.jpg 
[2] => http://localhost/testing_evn/wp-content/uploads/2012/03/wrt-85520_IGP0255.jpg 
[3] => http://localhost/testing_evn/wp-content/uploads/2012/03/wrt-85520_IZTP0635.jpg 
[4] => http://localhost/testing_evn/wp-content/uploads/2012/03/wrt-85520_ITG035t5.jpg 
[5] => http://localhost/testing_evn/wp-content/uploads/2012/03/wrt-85520_IRTT7375.jpg) 

それは本当パスを生成します()get_attached_fileを使用して..byアレイ用のサンプルますprint_rは、(いくつかの点で私は多分、PHPが終わっzipファイルを作成できないことが疑わHTTP - 。それは短い答えは下の長い1を参照)

+1

'create_zip()'というネイティブPHP関数はありません - この関数のコードを示してください。また、 'var_dump($ files_to_zip)'の結果を表示してください。 – DaveRandom

+0

サンプル配列の私の編集を見てください。 –

答えて

4

[OK]を - 。私はここで自分の質問にお答えします..私は私自身のsuコマンドを確認している

spicions - PHP HTTP上を通過する際ZIPを作成することはできません - 実際のパスを生成するために)(get_attached_fileを使用する必要があり、Wordpressの場合、例えばそう...

を私たちはPATHとないURLを必要とする。..

Array ( 
[0] => C:\Documents and Settings\OB\htdocs\test_env\wp-content\uploads\2012\03\wrt-62316IMAG0659.jpg 
[2] => C:\Documents and Settings\OB\htdocs\test_env\wp-content\uploads\2012\03\wrt-85520_IGP0255.jpg 
[3] => C:\Documents and Settings\OB\htdocs\test_env\wp-content\uploads\2012\03\wrt-85520_IZTP0635.jpg 
[4] => C:\Documents and Settings\OB\htdocs\test_env\wp-content\uploads\2012\03\wrt-85520_ITG035t5.jpg 
[5] => C:\Documents and Settings\OB\htdocs\test_env\wp-content\uploads\2012\03\wrt-85520_IRTT7375.jpg) 

(感謝@DaveRandom -Iは、実際にそれを何回も見ていた、誰かが、具体的にそれを見るように頼まれるまで、私は多くの注意を払っていなかったのvar_dump配列を見てについての彼のコメントを。)

そして、それは私を作りました私はずっと前にgdlibでPHPのストリーム関数、ファイルの作成、HTTPに関する別の問題を覚えています。 たとえば、gdlibやpdfの動的作成などのイメージライブラリは、すべてHTTPで失敗します。

関連する問題