我在C应用程序中将http://fastcgi.com/中的库用作后端,而Nginx Web服务器用作前端.
从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>
@H_403_10@通过接受请求
int FCGX_Accept_r(FCGX_Request *request);
@H_403_10@在FCGX_Request内部,我们有3个流:in,out,err. “ in”流中的标志为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;
@H_403_10@所有指针rdNext,wrNext,stop == 0之间的差异.差异(stop-stopUnget)约为0x500.
读取stopUnget和stop之间的数据会给我Nginx发送到我的应用程序的“ FASTCGI转储”,但是没有通过表单发送的数据.
但是,Nginx和fastcgi应用程序之间的嗅探器显示Nginx正确发送了HTTP POST的正文,包括1MB jpeg文件.
因此,如何通过POST请求获取HTML表单发送的数据并不干净.
最佳答案