Каковы последствия нулевых байтов и multipart / form-data? - PullRequest
0 голосов
/ 17 декабря 2009

Третья сторона отправляет нам плоский файл, который должен содержать исключительно печатные символы ASCII. Однако мы обнаружили, что в середине файла есть строка размером около 50 0x00 байт.

Мы хотим иметь возможность загрузить файл в наше веб-приложение, но я обнаружил, что Django, похоже, не нравится нулевые символы в multipart / form-data. Если я удалю нулевые символы, загрузка завершится успешно. (Извините, на данный момент у меня нет стека трассировки, но при необходимости он будет создан)

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

Похоже ли это на ошибку в Django или есть какой-то аспект multipart / form-data, который я не до конца понимаю? Нужно ли устанавливать какую-то кодировку передачи, чтобы Django не зависал с нулевыми символами?

1 Ответ

0 голосов
/ 17 декабря 2009

Нет, для данных формы не требуется (или когда-либо используется браузерами) передаточное кодирование. Вполне допустимо включить серию из 50 нулевых байтов в значение multipart / form-data ... действительно, учитывая, что большинство двоичных файлов содержат много нулей, такая ситуация должна возникать так же часто, как и при загрузке файлов!

Что заставляет меня задаться вопросом, действительно ли это баг Django или что-то еще не происходит. Давайте иметь эту трассировку стека!

...