加入收藏 | 设为首页 | 会员中心 | 我要投稿 商洛站长网 (https://www.0914zz.com/)- AI应用、CDN、边缘计算、云计算、物联网!
当前位置: 首页 > 运营中心 > Nginx > 正文

在FastCGI应用程序中无法获取HTTP POST的主体

发布时间:2021-01-12 11:46:45 所属栏目:Nginx 来源:互联网
导读:我在C应用程序中将http://fastcgi.com/中的库用作后端,而nginx Web服务器用作前端.从HTML格式成功发布1MB文件,并且变量“ CONTENT_LENGTH”足够大:)但我不知道如何使用libfcgi访问POST请求的主体.这是我的HTML表单,效果很好.form action=/upload enctype=mult

我在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> 

通过接受请求

int FCGX_Accept_r(FCGX_Request *request);

在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;

所有指针rdNext,wrNext,stop == 0之间的差异.差异(stop-stopUnget)约为0x500.

读取stopUnget和stop之间的数据会给我nginx发送到我的应用程序的“ FASTCGI转储”,但是没有通过表单发送的数据.

但是,nginx和fastcgi应用程序之间的嗅探器显示nginx正确发送了HTTP POST的正文,包括1MB jpeg文件.

因此,如何通过POST请求获取HTML表单发送的数据并不干净.

最佳答案 libfcgi提供了从输入流中读取的三个函数FCGX_GetStr,FCGX_GetLine和FCGX_GetChar.

while (FCGX_GetStr(buf,sizeof(buf),request.in) > 0) {
    /* ... */
}

您将需要解析multipart / form-data主体.

(编辑:商洛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读