我正在研究一個包含小型REST API的應用程序。其中一種方法需要在PUT請求上接受大量(近300MB)的二進制文件上傳。CakePHP 2.x - 直接訪問php://直接處理大請求正文
由於該文件非常大,並且由於存在一些此類請求一次運行的風險,因此我想避免將整個請求主體放在內存中。我曾希望通過直接從php://input
流中讀取並將其吸引到文件中來實現此目的。
但是,控制器的input()
方法似乎是干擾性的。我瞭解input()
的基本原理 - 只要您閱讀php://input
數據流,它就消失了,因此input()
就可以保留它以便重複訪問。顯然,這是我希望在這種情況下繞過的行爲。
看來,雖然,input()
被稱爲地方我控制器代碼運行之前,因爲當我到php://input
,什麼都不剩閱讀。
所以,我的問題:有沒有一種方法讓CakePHP控制器能夠將一個非常大的請求體傳輸到磁盤上,而無需首先將整個內容加載到內存中?