直接从URL将文件下载到本地文件夹或远程服务器中的文件夹

我觉得

我已经从链接下载了文件,并且必须保存在本地系统文件夹或远程服务器文件夹中。场景是:我有一个mailgun域,当我向它发送邮件时,Mailgun存储功能(store())将它与所有附件一起存储并通知我。mailgun的响应被捕获catch_email_attachment(),我可以获取响应并获得附件的链接。当我直接在浏览器中运行链接时,它会给我附加文件,对此没有任何问题。但是我需要在catch_email_attachment()&中下载文件并将其保存在文件夹中。

可下载的文件为:“ https://API:<API-KEY>@api.mailgun.net/v2/domains/sandboxa6e6ebce3f68475aa3xxxxxxxd60.mailgun.org/messages/eyJwIjogZmFsc2UsICJrIjogImQ0MmZjxxxxxxxxxxxxxxDQwNy1iYzhlLTA2OWMxY2U3MDg2NCIsIxxxxxxxxxxxxxx1Y2UiLCAiYyI6ICJpYWR0cmFpbGVycyJ9/attachments/0

我的代码如下:

public function catch_email_attachment()
{
    $data = $this->input->post(null, true);
    if (!empty($data)) {
        if (isset($data['attachments'])) {
            /*
            Output of $data['attachments'] is below:
            [{"url": "https://api.mailgun.net/v2/domains/sandboxa6e6ebce3f68475aa3xxxxxxxd60.mailgun.org/messages/eyJwIjogZmFsc2UsICJrIjogImQ0MmZjxxxxxxxxxxxxxxDQwNy1iYzhlLTA2OWMxY2U3MDg2NCIsIxxxxxxxxxxxxxx1Y2UiLCAiYyI6ICJpYWR0cmFpbGVycyJ9/attachments/0", "content-type": "image/jpeg", "name": "xxxxxxx.jpeg", "size": 9498}]
            */

            copy('https://API:[email protected]/v2/domains/sandboxa6e6ebce3f68475axxxxxxxxxxxxxxxxxxxxxxxxxxxx.mailgun.org/messages/eyJwIjogZmFsc2UxxxxxxxxxxxxxxxxxxxxxxxxxxxxmUtNDQwNy1iYzhlLTA2OWMxY2U3MDg2NCIxxxxxxxxxxxxxxxxxxxxxxxxxxxx1Y2UiLCAiYyI6ICJpYWR0cmFpbGVycyJ9/attachments/0', '/var/www/download_loc/');
        }
    }
}

我已引用:https : //stackoverflow.com/a/26330976/4229270

https://stackoverflow.com/a/6594030/4229270

https://stackoverflow.com/a/724449/4229270

您能帮我解决问题吗?在此先感谢。

法基

看起来像是$data['attachments']一个json数组,所以您需要类似以下内容:

    $attachments = json_decode($data['attachments']);
        $api_key = 'APIKEY';
        if ($attachments) {
            foreach ($attachments as $attachment) {

                $context = stream_context_create(array(
                    'http' => array(
                        'header'  => "Authorization: Basic " . base64_encode("API:$api_key")
                    )
                ));

                file_put_contents('/var/www/download_loc/' . $attachment->name, file_get_contents($attachment->url, false, $context));

            }
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用python自动执行ssh'到服务器和将文件下载到特定文件夹的过程

Scp命令语法,用于将文件夹从本地计算机复制到远程服务器

将文件和文件夹从Google存储桶下载到本地文件夹

如何使用Wget从URL将所有图像下载到单个文件夹中?

使用python将文件下载到特定文件夹

如何将文件从s3服务下载到本地文件夹

将SAS数据集文件保存到服务器上的本地文件夹

cordova:从url下载到android下载文件夹

将文件从C#的FTP服务器下载到修改日期大于指定日期的本地文件夹

如何在没有下载提示的情况下将文件从服务器写入本地文件夹?

将所有文件从FTP上的特定文件夹下载到本地文件夹

SFTP:从远程服务器递归复制/下载文件夹中的所有文件

如何使用Dired / Trap将文件从远程服务器复制到emacs中的本地文件夹?

C#将文件保存到服务器上的文件夹而不是本地

使用c#将文件列表从ftp下载到本地文件夹?

将本地文件夹结构转换为服务器上的文件夹结构

如何使用PuTTY psftp将整个文件夹和子文件夹从远程服务器复制到本地计算机

将mysqldump命令启动到远程服务器,并将mysqldump的备份文件保存在同一远程服务器的特定文件夹中

使用SSH将文件从文件夹移动到远程服务器上的文件夹,而无需将文件下载到本地计算机

重命名远程服务器上的文件夹

为什么不能使用此命令将文件夹从远程服务器复制到本地?

导航到远程服务器的文件夹结构

无法将文件下载到SMB共享文件夹

将远程服务器安装到特定文件夹中的权限问题

查询:rsync-将本地文件夹从远程服务器复制到远程服务器

gzip压缩本地文件夹并将其解压缩到远程服务器

FTP在FileZilla中的远程服务器上移动文件/文件夹

如何允许将文件下载到 Downloads 文件夹以外的文件夹?

C# 如何将文件从 URL 下载到服务器文件夹