Модуль Apache. Отправить файл как ответ - PullRequest
0 голосов
/ 07 марта 2019

Я хочу создать модуль C Apache, который отправляет определенный файл клиенту в зависимости от параметров, переданных в запросе POST.

Я знаю, как отправить текстовый ответ, используя ap_rputs или ap_rprintf , как показано в примерах здесь , но не как отправить файл (двоичный файл ), который хранится на сервере с помощью кода (кроме перехода к прямому URL-адресу файла).

Пример того, что я хочу: я отправляю POST-запрос в myserverurl / files с ключом = file и значением = test.zip, и в результате клиент загружает файл 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...