Парсинг имени файла заголовка довольного расположения в multipart/from-data

Согласно RFC, в multipart/form-data поле имени файла заголовка довольного расположения получает как параметр HTTP, который заключенная в кавычки строка - представляет в виде строки между выходами, где символ '\' может выйти из любого другого символа ASCII.

Проблема, веб-браузеры не делают этого.

IE6 отправляет:

Content-Disposition: form-data; name="file"; filename="z:\tmp\test.txt"

Вместо ожидаемого

Content-Disposition: form-data; name="file"; filename="z:\\tmp\\test.txt"

Который должен быть проанализирован как z:tmptest.txt согласно правилам вместо z:\tmp\test.txt.

Firefox, Konqueror и Chrome не выходят "из символов, например:

Content-Disposition: form-data; name="file"; filename=""test".txt"

Вместо ожидаемого

Content-Disposition: form-data; name="file"; filename="\"test\".txt"

Так..., как Вы предложили бы заниматься этой проблемой?

У Кого-либо есть идея?

10
задан Stephen Kennedy 2 July 2015 в 09:11
поделиться

1 ответ

Есть ли причина, по которой вам вообще нужно разбирать это имя файла?

По крайней мере, единственная последовательная вещь заключается в том, что часть заголовка filename заканчивается двойной кавычкой, поэтому вам просто нужно прочитать все между filename="" и final ".

Затем вы можете рассматривать любой обратный слеш, кроме \\\, \" или \", как буквальный обратный слеш, если только вы не считаете особенно вероятным, что пользователи будут загружать имена файлов с табуляцией :)

.
2
ответ дан 4 December 2019 в 04:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: