2012-06-11 38 views
1

是否可以模擬Kohana 3.2中的文件上傳請求?我正在嘗試以下但沒有多少運氣:通過Kohana中的Request Factory發佈文件

$file = file_get_contents('../../testimage.jpg'); 

$request = new Request('files'); 
$request->method(HTTP_Request::POST); 
$request->post('myfile', $file); 
//$request->body($file); 
$request->headers(array(
      'content-type' => 'multipart/mixed;', 
      'content-length' => strlen($file) 
     )); 
$request->execute(); 

回答

0

This Kohana forum post表明它應該是可能的。鑑於你的代碼的相似性,我猜你已經發現了。爲不爲你工作'S,可以嘗試捲曲:

​​3210

如果你想使用Kohana的請求,你可以嘗試建立使用此代碼你自己的多主體(我沒有正確的安裝測試它現在應該接近你所需要的):

$boundary = '---------------------' . substr(md5(rand(0,32000)), 0, 10); 
$contentType = 'multipart/form-data; boundary=' . $boundary; 
$eol = "\r\n"; 
$contents = file_get_contents('../../testimage.jpg'); 

$bodyData = '--' . $boundary . $eol; 
$bodyData .= 'Content-Type: image/jpeg' . $eol; 
$bodyData .= 'Content-Disposition: form-data; name="myfile"; filename="testimage.jpg"' . $eol; 
$bodyData .= 'Content-Transfer-Encoding: binary' . $eol; 
$bodyData .= $contents . $eol; 
$bodyData .= '--' . $boundary . '--' . $eol . $eol; 

$request = new Request('files'); 
$request->method(HTTP_Request::POST); 
$request->headers(array('Content-Type' => $contentType)); 
$request->body($data); 
$request->execute(); 
+0

是的,我從那裏得到它。我想弄清楚如何讓requestFactory代碼工作。這似乎是發佈罰款控制器只是沒有拿起文件。 – esimran

+0

我改變了我的答案,不使用cURL。也許它更接近你要找的東西。 –

0

找到a pull request從GitHub討論此事。我結束了加入一些測試代碼到我的控制器來解決這個問題:

if ($this->request->query('unittest')) 
    { 
     // For testing, don't know how to create internal requests with files attached. 
     // @link http://stackoverflow.com/questions/10988622/post-a-file-via-request-factory-in-kohana 
     $raw_file = file_get_contents(APPPATH.'tests/test_data/sample.txt'); 
    } 

一個Request::files()方法將是很好壽。

相關問題