生成包含可变地址和文件的动态zip文件,并获取可下载链接
P粉513318114
P粉513318114 2023-08-08 19:02:30
[PHP讨论组]

我想将2个文件放入一个zip文件中,一个是thanks.txt,另一个是file.dat,使用以下代码,并且链接到这个zip文件,但是我的代码运行不正确,我需要帮助来纠正和优化这段代码。

在thanks.txt文件中,将以下文本与客户的用户电子邮件一起放置:

Hi, Dear '.$email_address.' Thanks for using it!

我的代码:

funtion create_zip_file() {
    
    // Get Current User Email Address!
    $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($directory_path, 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'] .'/';
    } else {
        $website_url = 'http://' . $_SERVER['HTTP_HOST'] .'/';
    }

    $result = $website_url . $directory_path . 'file.dat'; 

    $zip = new ZipArchive;
    if ($zip->open($zip_file , ZipArchive::CREATE) === TRUE)
    {
        // Add files to the zip file
        $zip->addFile($result);
        
        // Add a file new.txt file to zip using the text specified
        $zip->addFromString('thanks.txt', 'Hi, Dear '.$email_address.' Thanks for use it!');
     
        // All files are added, so close the zip file
        $zip->close();
        
        // Delete file after zip it
        unlink($result);
    }
    
    $zip_file = $website_url . $directory_path . 'file.zip';
    
    if (file_exists($zip_file)) {
        return $zip_file;
    } else {
        return false;
    }
}

并且我通过以下代码调用zip文件:

<a href="<?php echo create_zip_file();"> Download zip file </a>

如果我在以下代码中使用静态地址($zip_file):

if ($zip->open($zip_file , ZipArchive::CREATE) === TRUE)

zip文件已创建,但是当我使用动态地址时,没有创建zip文件。

P粉513318114
P粉513318114

全部回复(1)
P粉463824410

$zip->addFile($result); 期望在服务器上传入有效路径,但你传入了该文件的URL。

同样适用于 $zip_file = $website_url . $directory_path . 'file.zip';

请使用创建 .dat 文件时使用的相同路径:$zip->addFile($directory_path . 'file.dat')

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号