2014-07-07 62 views
6

如何取回附件和保存通過表單後與Mailgun的POST檢索Mailgun表單提交PHP

發給我的附件下面的一些參數

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\"\r\nContent-Type: image/gif\r\nContent-Length: 2785\r\n"} 

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\"\r\nContent-Type: text/plain\r\nContent-Length: 32\r\n"} 

Content-Type  
multipart/mixed; boundary="------------020601070403020003080006" 

回答

5

所以我知道這一點是一年後,但我有同樣的問題,並找出如何下載附件。帖子中的文件存儲在環境變量$_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/"); 

文檔可從路線會話found here.

+1

非常感謝每下載附件。這個工作。:-) –

+0

能你稍微澄清一下,也許有一些示例代碼。我的問題 – ratherBeKiting

+0

引用了mailgun文檔,https://documentation.mailgun.com/quickstart-receiving.html#supported-actions-for-routes –

4
  1. 使用店內的行動,以獲取有關您的電子郵件信息 。 (retrieving stored message
  2. json_decode「附件」,以獲取有關附件的信息
  3. 獲取API密鑰,才能使用得到API使用PHP庫屬性。

,如果你的JSON解碼附件列表$文件,你可以做

$mgClient = new Mailgun('yourApiKey'); 

foreach ($files as $file){ 
    file_put_contents($file->name,$mgClient->get($file->url)->http_response_body);  
}