我在C++應用程序中使用http://fastcgi.com/的庫作爲後端,並將nginx網絡服務器用作前端。無法在FastCGI應用程序中獲取HTTP POST的正文
從HTML格式的成功發佈1MB文件和變量「CONTENT_LENGTH」足夠大:)但我無法弄清楚如何使用libfcgi訪問POST請求體。這是我的HTML表單,它的效果很好。
<form action="/upload" enctype="multipart/form-data" method="POST">
<input type="test" name="text1" />
<input type="file" name="file1" />
<input type="submit" />
</form>
請求通過
int FCGX_Accept_r(FCGX_Request *request);
的FCGX_Request裏面接受,我們有3個數據流:IN,OUT犯錯。的 「中的」 流具有標誌isReader == 1,其它的isReader == 0
typedef struct FCGX_Stream {
unsigned char *rdNext; /* reader: first valid byte
* writer: equals stop */
unsigned char *wrNext; /* writer: first free byte
* reader: equals stop */
unsigned char *stop; /* reader: last valid byte + 1
* writer: last free byte + 1 */
unsigned char *stopUnget; /* reader: first byte of current buffer
* fragment, for ungetc
* writer: undefined */
int isReader;
int isClosed;
int wasFCloseCalled;
int FCGI_errno; /* error status */
void (*fillBuffProc) (struct FCGX_Stream *stream);
void (*emptyBuffProc) (struct FCGX_Stream *stream, int doClose);
void *data;
} FCGX_Stream;
所有指針rdNext,wrNext之間的差異,停止== 0的差值(停止 - stopUnget)爲約爲0x500 。
讀取stopUnget和stop之間的數據,給我發送nginx到我的應用程序的「FASTCGI-dump」,但沒有通過表單發送數據。
雖然,nginx和fastcgi應用程序之間的嗅探器顯示nginx正確發送HTTP POST的正文,包括1MB jpeg文件。
因此,如何通過POST請求獲取HTML表單發送的數據並不清晰。