2013-05-06 120 views
0

我想使用一個API,我沒有得到任何地方。該機制的文檔說,「傳真文件直接寫入到二進制格式要求輸入流」PHP上傳文件到API

我一直在使用的例子從網絡就像試圖....

$xSendURL = 'http:/example.com/default.ashx?OPT=SendFax&UserName=johndoe...'; 

# New data 
$data = array('FileData' => '@/DATA/html/sites/support/FAAPI/TEST.TIF'); 

# Create a connection 
$ch = curl_init(); 

# Setting our options 
curl_setopt($ch, CURLOPT_URL, $xSendURL); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 

# Get the response 
$response = curl_exec($ch); 
curl_close($ch); 

但是,當我檢查文件在服務器上創建的文件的內容是我爲$ data變量定義的路徑。 (@/DATA/html/sites/support/FAAPI/TEST.TIF)

我很新的php。我看着php:// input和php:// outout,但我不確定這是否可行。

在我用來調用API的URL上傳遞文件名,用戶名和安全令牌我不知道如何在打開URL後抓取請求輸入流來上傳文件。

任何幫助表示讚賞。

感謝

+0

嘗試雙引號來代替單引號括起來的'FileData'路徑 – 2013-05-06 06:50:23

回答

0

我會嘗試使用file_get_contents()函數有一個專門的流。它的工作原理如下:

  1. 創建一個「上下文」,這是一個描述一個HTTP請求應如何形成:

    • 使用POST請求
    • 與內容類型發送的附加報頭:圖像/ TIFF
    • 包括TIFF文件
  2. 請求使用S的API URL的內容特殊背景。

骨架代碼:

$data = file_get_contents('/DATA/html/sites/support/FAAPI/TEST.TIF'); 

$options = array('http' => 
    array(
     'method' => 'POST', 
     'header' => 'Content-type: image/tiff', 
     'content' => $data, 
    ) 
); 

$context = stream_context_create($options); 
$result = file_get_contents($xSendURL, false, $context); 
+0

這工作就像一個魅力!非常感謝你。 – user2353592 2013-05-06 17:50:11

+0

你能接受答案嗎? – hegemon 2013-05-06 18:15:20