У меня есть приложение macOS, написанное на Objective-C, которое загружает файл на сервер, используя многочастный запрос. Он хранит данные файла в поле под названием «документ» и помещает дополнительное поле «база данных» в заголовок:
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"document\"; database=\"%s\"\r\n", DATABASE] dataUsingEncoding:NSUTF8StringEncoding]];
Я пишу замену Vapor для упрощенных сценариев, которые я использовал в течение нескольких лет. В PHP на сервере, чтобы извлечь значение поля «база данных», я использую:
$database = $_FILES['document']['database'];
Я не могу найти способ сделать то же самое в Vapor. Я могу счастливо распаковать сам файл, используя:
guard let filebytes = req.formData?["document"]?.part.body else ...
Я пытался изменить порядок полей и т. Д. Кто-нибудь делал это? Или есть лучший способ создания запроса в первую очередь? Благодарю.
РЕДАКТИРОВАТЬ:
Я добился определенного прогресса:
req.formData?["document"]?.part.headers["Content-Disposition"]
дает
"form-data; database=\"test\"; name=\"document\""
Теперь просто нужно извлечь интересующую меня информацию!
Оказывается, что единственное нефайловое поле, которое вы можете установить / открыть для Vapor, это поле с именем filename
в multipart/form-data
, Итак, я достиг того, что хотел сделать, добавив еще одну часть и поместив в нее поля.
Других решений пока нет …