загрузка файлов через G-WAN

Я пытаюсь загрузить файл изображения с XMLHttpRequest и FormData API на свой сервер G-WAN, но не могу получить содержимое файла. Вот результат в h_entities:

-----------------------------75940917410019849751723987620 Content-Disposition: form-data; name="test_param" test_value 
-----------------------------75940917410019849751723987620 Content-Disposition: form-data; name="uploadedFile"; filename="test.png" Content-Type: image/png PNG

«Тип содержимого» - это multipart / form-data. Кому-нибудь удалось закачать файлы в G-WAN? Я не нашел примера. Спасибо!


person Ogla V. Sungutay    schedule 18.10.2012    source источник


Ответы (1)


Я потратил последние часы на то, чтобы написать специальный пример для G-WAN v3.10 + под названием entity.html (форма с кнопкой [browse] для POST файла), который будет вызывать сервлет entity.c (который сообщает все о сущности POST и перечисляет ее первые 1000 байт).

Первое, что затронет ваш G-WAN версии 3.3, - это ограничение размера объекта POST, и вы получите ошибку HTTP 413 (объект запроса слишком большой).

Я написал пример сервлета под названием entity_size.c, чтобы показать, как изменить это ограничение (это можно сделать в обработчике или в сервлете и в любое время).

Второе, что вам нужно сделать (и это делается автоматически с G-WAN v3.10 +), - это загрузить любую недостающую часть объекта, которая еще не была загружена с помощью HTTP-запроса (в v3.3 это потребует обработчик играет с кодами возврата, чтобы прочитать больше, пока все не будет загружено).

Эти два пункта были повторяющимися вопросами (на ныне несуществующем форуме), так что пришло время привести пример.

Итак, если вы не очень смелы (и не готовы следовать приведенным выше указаниям), вы понимаете, что, вероятно, лучше дождаться версии 3.10, которая выйдет позже в этом месяце: она сделает эту работу за вас, и у вас будет пара проверенных примеров, из которых можно поучиться.

Обратите внимание, что entity.c также может быть вызван для анализа любого типа запроса, не только multipart/form-data кодировок, и не только POST запросов (он также демонстрирует PUT и DELETE).

Последнее замечание: я также изменил код, чтобы убедиться, что в сервлете argc/argv main() указаны ОБЕ параметры URI и объект POST/PUT.

Это позволяет делать такие вещи, как: POST /?blog/user/1245/day/24, где все, что вам нужно для доступа к user=1245 и day=24 (а также к сущности), - это читать argv[].

Надеюсь, это поможет вам в ваших проектах!

person Gil    schedule 18.10.2012
comment
Большое спасибо за подробный ответ! Я более чем смел, но мое время лучше потратить на другие части моих приложений, пока у нас не появится эта функция. Мне очень нравится G-WAN (и C API), и я с нетерпением жду релиза 3.10. - person Ogla V. Sungutay; 18.10.2012