Я хочу создать модуль 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.