【问题标题】:Generating a download link for an uploaded file using PHP使用 PHP 为上传的文件生成下载链接
【发布时间】:2013-08-29 05:32:53
【问题描述】:

使用 PHP,我创建了一个通过电子邮件上传和发送文件的表单。现在,上传工作完美,并自动将电子邮件发送到指定的电子邮件地址。如果可能的话,我想包括电子邮件中文件的下载链接。我已经可以发送一个链接,但是每当我点击链接时,它都会在浏览器上打开文件。我希望在单击链接时下载它。问题是,我没有将上传的文件连接或保存到我的数据库中。我只是将它上传到我的服务器上,然后直接发送给接收者。是否有可能实现我想做的事情?如果是,我怎样才能做到这一点?还是我需要为它创建一个数据库?

【问题讨论】:

    标签: php email


    【解决方案1】:

    您需要在链接指向的页面上编写文件下载代码。从链接中提取文件名并编写以下代码

     if (file_exists($file))
     {
        if (FALSE!== ($handler = fopen($file, 'r')))
       {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($file));
        header('Content-Transfer-Encoding: chunked'); //changed to chunked
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        //header('Content-Length: ' . filesize($file)); //Remove
    
        //Send the content in chunks
        while(false !== ($chunk = fread($handler,4096)))
        {
            echo $chunk;
        }
    }
    exit;
    }
    

    【讨论】:

    • 谢谢。我试试看
    • 谢谢。这允许创建一个 url 但是,当我尝试下载文件时,我无法打开它并且我的电子邮件的所有其他内容,它们都是文本消失了。这是为什么?
    • 你把这段代码放在哪里了?在您的电子邮件内容中,您无需更改任何内容。您只需将此代码放在电子邮件中链接指向的位置
    • 我不确定我明白你的意思。提交后表单会重新加载,因此我将您的代码添加到同一个文件中。
    • @user1597438 不,您正在通过电子邮件发送链接。该链接的href 是什么。我只是说将此代码放在链接的href 指出的那个页面上。例如,您要在电子邮件中发送一个链接,例如 <a href="www.mysite.com/abc.php">Link</a>。现在在您的网站中将上面的代码放入abc.php
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    相关资源
    最近更新 更多