Я пишу сценарий, который загружает файл на cgi сценарий, который ожидает многослойный запрос, такой как форма на странице HTML. boundary
уникальный маркер, который аннотирует содержание файла в теле запроса. Вот тело в качестве примера:
--BOUNDARY
Content-Disposition: form-data; name="paramname"; filename="foo.txt"
Content-Type: text/plain
... file contents here ...
--BOUNDARY--
boundary
не может присутствовать в содержании файла, по очевидным причинам.
Что я должен сделать для создания уникальной границы? Я должен генерировать случайную строку, проверить, чтобы видеть, находится ли это в содержании файла, и если это, генерируйте новое, промывку и повторение, пока у меня нет уникальной строки? Или был бы "довольно случайный маркер" (скажите, комбинация метки времени, обработайте идентификатор, и т.д.) быть достаточно?
Если вы используете что-то случайное, как GUID, не должно быть никакой необходимости охотиться через полезную нагрузку, чтобы проверить псевдоним границы. Что-то вроде: -
---- = NextPart_3676416B-9AD6-440C-B3C8-FC66DDC7DB45
Заголовок: ....
полезная нагрузка
---- = NextPart_3676416B-9AD6-440C-B3C8-FC66DDC7DB45 -
Если вы чувствуете параноик, вы можете генерировать случайную границу и искать его в строке, которая будет отправлена, добавьте случайное CHAR (или повторно создать новую) на Find, повторите. Но мой опыт - любая произвольная неразрушающая строка из 10 или около того, что персонажи составляют невозможными, поэтому выбирая что-то вроде --- граничная --- граничная --- граница --- совершенно достаточной.