Ошибка с netty для загрузки файла по протоколу http - PullRequest
0 голосов
/ 21 марта 2020

Не знаю, действительно ли это ошибка, но я с ней сталкивался.

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

Когда имя файла все буквы sh Engli * или цифры , все в порядке; Но как только имя файла содержит китайский, корейский, японский и другие не-английский sh символы , возникает ошибка " ErrorDataDecoderException ".

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

Content-Disposition: form-data; name = "file"; filename = "c73b1345ab18deeef6cdb220d62fc976我是汉字.jpg"; filename* = "UTF-8''c73b1345ab18deeef6cdb220d62fc976%E6%88%91%E6%98%AF%E6%B1%89%E5%AD%97.jpg"

Когда это чистый английский sh часть, тело контента:

Content-Disposition: form-data; name = "file"; filename = "6e3f8201c976de67aae094c72634f75e.jpg"

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

Так что Нетти использует ';' для разделения содержимого тела? Это приводит к этой ошибке. Если нет, то как возникла эта ошибка?

1 Ответ

0 голосов
/ 22 марта 2020

Это похоже на недавно исправленную ошибку:

https://github.com/netty/netty/pull/10089

Пожалуйста, обновите Netty до последней версии

...