Apache模块。发送文件作为回复

时间:2019-03-07 15:54:43

标签: c apache module

我想用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标头。

0 个答案:

没有答案