问题描述
这是情况。我必须开发一个FCGI-Application,该应用程序必须以HTTP-POST-Request的形式处理约150MB有效负载的请求,该请求将以约150MB的数据大小进行回复。
要读取POSTED数据,我创建了一个功能(如下所述)。问题是,
-
我是否必须使用 multiple FCGX_GetStr(..) -calls,还是使用一个 FCGX_GetStr(。 。)调用,我需要 do-while循环吗?文档/包含文件中说明了返回值:“
读取的字节数。如果结果小于n,则表示已到达输入的结尾。
-
将0作为来自 FCGX_GetStr(..)的字节-读取-返回值表示我们到达末尾吗?
-
我太笨了,或者没有FCGX_FPrintF等手册页?
char *getRequestContent(FCGX_Request *request) {
char *content_length_str = FCGX_GetParam("CONTENT_LENGTH",request->envp);
int allBytesRead = 0;
int bytesRead = 0;
.....
int content_length = strtol(content_length_str,(char **)NULL,10);
......
char *buffer = (char *)malloc(sizeof(char)*content_length+1); // Allocate incoming buffer
.....
do {
bytesRead = FCGX_GetStr(buffer+allBytesRead,// Start Address of Buffer
content_length-allBytesRead,// How much to read
request->in); // from where
if (bytesRead == 0) break; // possible error in the Header .. simply skip me
if (bytesRead < 0) { // Error Occured ??
// handle some Errors // Annoy User and bail out
}
allBytesRead += bytesRead;
} while (allBytesRead < content_length);
buffer[content_length] = '\0'; // Just to be safe,terminate the String
return buffer;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)