ホームページ  >  に質問  >  本文

可変アドレスとファイルを含む動的 zip ファイルを生成し、ダウンロード可能なリンクを取得します

<p>次のコードを使用して、2 つのファイルを zip ファイルに入れ、1 つは thanks.txt、もう 1 つは file.dat としたいのですが、この zip ファイルにリンクしますが、コードが正しく実行されません。このコードの修正と最適化に役立ちます。 <br /><br /> thanks.txt ファイルに、顧客のユーザー電子メールとともに次のテキストを配置します: <br /><br />こんにちは、'.$email_address 様。 ' ご利用いただきありがとうございます!<br /><br />私のコード:</p><p><strong></strong></p> <pre class="brush:php;toolbar:false;">function create_zip_file() { // 現在のユーザーのメール アドレスを取得します。 $current_user = wp_get_current_user(); $email_address = $current_user->user_email; $md5_address = md5($email_address); $directory_path = 'myfiles/cloud/' . $md5_address . '/'; if (!file_exists($directory_path)) { mkdir($ディレクトリパス, 0777, true); } $Myfile = file_put_contents($directory_path . 'file.dat' , $email_address); if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') { $website_url = 'https://' . $_SERVER['HTTP_HOST'] .'/'; } それ以外 { $website_url = 'http://' . $_SERVER['HTTP_HOST'] .'/'; } $result = $website_url . $directory_path . 'file.dat'; $zip = 新しい ZipArchive; if ($zip->open($zip_file , ZipArchive::CREATE) === TRUE) { //zipファイルにファイルを追加します $zip->addFile($result); // 指定されたテキストを使用してファイル new.txt ファイルを zip に追加します $zip->addFromString(' thanks.txt', 'こんにちは、'.$email_address.' 様、ご利用いただきありがとうございます!'); // すべてのファイルが追加されたので、zip ファイルを閉じます $zip->close(); // zip圧縮後にファイルを削除 リンクを解除($result); } $zip_file = $website_url . $directory_path . 'file.zip'; if (file_exists($zip_file)) { $zip_file を返します。 } それ以外 { false を返します。 } }</pre> <p><strong>そして、次のコードで zip ファイルを呼び出します。</strong></p> <p><code><a href="<?php echo create_zip_file();"> zip ファイルをダウンロード </a></code></p> <p>次のコードで静的アドレス ($zip_file) を使用すると: </p> <p><code>if ($zip->open($zip_file , ZipArchive::CREATE) === TRUE)</code></p> <p>zipファイルは作成されますが、動的アドレスを使用するとzipファイルが作成されません。 </p>
P粉513318114P粉513318114460日前658

全員に返信(1)返信します

  • P粉463824410

    P粉4638244102023-08-09 00:24:08

    $zip->addFile($result); サーバー上の有効なパスが必要ですが、ファイルの URL が渡されました。

    $zip_file = $website_url . $directory_path . 'file.zip' にも同じことが当てはまります;

    .dat ファイルの作成時に使用したものと同じパスを使用してください: $zip->addFile( $ directory_path . 'file.dat')

    返事
    0
  • キャンセル返事