Составная форма, порядок полей / файлов - PullRequest
0 голосов
/ 15 апреля 2020

Мой API должен обрабатывать загрузки файлов, а также вложенных файлов в сообщениях электронной почты. Письма направляются в мой API через функцию анализа почты в Sendgrid.

Оба метода приводят к многочастной форме. В случае с электронной почтой поля «to», «from» и т. Д. c. В обычной форме загрузки я выбираю поля.

Я не хочу обрабатывать локальные временные файлы, поэтому в идеале я просто передам потоки файлов на S3. Я реализовал это, и это прекрасно работает. Но есть крайние случаи ..

Прежде чем я передам файлы на S3, я хочу убедиться, что электронная почта имеет тип * * * * * * *. Я делаю это, проверяя адреса от и до. К сожалению, в составных формах не указывается конкретный порядок c для полей / файлов, скорее, выражение c говорит о сохранении порядка исходной формы.

Задача

Иногда я получал электронные письма от синтаксического анализа Sendgrid, куда приходят поля ПОСЛЕ файлов.

Итак, для проверки отправителя через поля формы мне может понадобиться буферизовать файл во время ожидания данных поля. Кажется, это довольно глупый способ обработки входящих файлов, т.е. начать обрабатывать / хранить файлы, прежде чем я даже узнаю, должен ли я их обрабатывать.

Все электронные письма, отправленные на указанный поддомен, будут пересылаться из Sendgrid на мой сервер. Это означает, что я потенциально мог быть залит электронными письмами, которые мне пришлось бы обработать полностью (включая буферизацию файлов), прежде чем я смогу решить, является ли электронное письмо le git.

Вопрос

Я что-то не так понял?

Некоторые почтовые клиенты откладывают загрузку вложений. Как это сделать?

Инструменты, которые я использую

  • node.js

  • multiparty

  • Sendgrid Parse

1 Ответ

0 голосов
/ 24 апреля 2020

Наконец-то я это понял. Простой ответ заключается в том, что составная форма представляет собой единый поток. Если файлы находятся перед полями в потоке, я должен буферизовать файлы в ожидании полей. По крайней мере, если мне понадобится информация из полей для обработки файлов.

Я полагаю, что почтовые клиенты, которые могут отложить загрузку вложений, должны полагаться на сервер, который анализирует электронную почту и буферизует файлы.

Спасибо Дугу Уилсону по телефону https://github.com/pillarjs/multiparty за разъяснения.

...