检索附件从Mailgun表单后PHP



如何检索和保存通过Mailgun的post表单发送给我的附件

下面是一些参数

attachment-1    
{:filename=>"crabby.gif", :type=>"image/gif", :name=>"attachment-1", :tempfile=>#<Tempfile:/tmp/RackMultipart20140707-2-slsrkh>, :head=>"Content-Disposition: form-data; name="attachment-1"; filename="crabby.gif"rnContent-Type: image/gifrnContent-Length: 2785rn"}
attachment-2    
{:filename=>"attached_файл.txt", :type=>"text/plain", :name=>"attachment-2", :tempfile=>#<Tempfile:/tmp/RackMultipart20140707-2-sudxuf>, :head=>"Content-Disposition: form-data; name="attachment-2"; filename="attached_файл.txt"rnContent-Type: text/plainrnContent-Length: 32rn"}
Content-Type    
multipart/mixed; boundary="------------020601070403020003080006"

所以我知道这是一年晚了,但我有同样的问题,并弄清楚如何下载附件。post中的文件存储在环境变量$_FILES中。每个文件的信息看起来像这样:

Array
(
    [attachment-1] => Array
        (
            [name] => ATextFile.txt
            [type] => text/plain
            [tmp_name] => /tmp/php8zhmlU
            [error] => 0
            [size] => 70144
        )
)

文件的路径存储在tmp_name中,因此在本例中,/tmp/php8zhmlU是文件的完整路径。move_uploaded_file将覆盖任何现有的文件!为了从POST下载所有附件,我编写了一个函数:

function download_attachments($pathToDownloadDirectory)
{
    foreach($_FILES as $file)
    {
        if($file['error'] == "0")
        {
            if(!(move_uploaded_file($file['tmp_name'], $pathToDownloadDirectory . $file['name'])))
            {
                return 0;
            }
        }
        else
        {
            return 0;
        }    
    }
    return 1;
}
download_attachments("/Full/Path/To/Some/Dir/");

这个顶部的文档可以在这里找到

  1. 从路由会话中使用存储操作来获取信息关于你的邮件。(检索存储的消息
  2. json_decode "attachments"属性以获取信息关于您的附件
  3. 获取api密钥并使用php库来使用get api。

如果你的json解码的附件列表是$files,你可以做

$mgClient = new Mailgun('yourApiKey');
foreach ($files as $file){
    file_put_contents($file->name,$mgClient->get($file->url)->http_response_body);    
}

下载所有附件

相关内容

  • 没有找到相关文章

最新更新