我想用C创建一个Apache模块,该模块根据POST请求中传递的参数将某些文件发送到客户端。
我知道如何使用示例here中所示的 ap_rputs 或 ap_rprintf 发送文本回复,但不知道如何发送文件(二进制文件) )(通过代码存储在服务器中)(除了转到直接文件URL)。
我想要的示例:我向key =文件且value = test.zip的myserverurl / file发送POST请求,结果,客户端下载了test.zip文件。如果密钥不是 file ,则会得到不同的结果。
按照示例代码之一,此处下载将在POST主体密钥被识别为 file 后开始:
static int example_handler(request_rec *r){
/*~~~~~~~~~~~~~~~~~~~~~~*/
keyValuePair* formData;
/*~~~~~~~~~~~~~~~~~~~~~~*/
formData = readPost(r);
if (formData) {
int i;
for (i = 0; &formData[i]; i++) {
if (formData[i].key && formData[i].value) {
if (!strcasecmp(formData[i].key, "file")) {
// the client receives the file in formData[i].value!
// how?
}
else{
ap_rprintf(r, "%s = %s\n", formData[i].key, formData[i].value);
}
} else if (formData[i].key) {
ap_rprintf(r, "%s\n", formData[i].key);
} else if (formData[i].value) {
ap_rprintf(r, "= %s\n", formData[i].value);
} else {
break;
}
}
}
}
必须以这种方式触发文件下载,我不能使用其他方法,例如x-send标头。