Tale: Разместите статью, содержащую "=", "&", из-за которой не удалось сохранить

Созданный на 18 дек. 2019  ·  6Комментарии  ·  Источник: otale/tale

После входа в фоновый режим я написал статью.Поскольку некоторые описания требуют кода, я вставил фрагменты кода.
При сохранении результата было обнаружено, что в фоновом режиме была обнаружена ошибка.
io.netty.handler.codec.http.multipart.HttpPostRequestDecoder$ErrorDataDecoderException: java.io.IOException: Unable to create temporary file, C:\Users\pys1714\AppData\Local\Temp\Attr_7771572786958116046_{"cid":4,"title":
Увидев ошибку, я сначала подумал, что стратегия сохранения заключается в кешировании в виде файла, и было ограничение на длину данных, поэтому я начал удалять текст и отлаживать. Я обнаружил, что временные файлы не создаются. Итак, я подозревал, что это была какая-то причина для создания файла.

По ошибке найдите базовый метод io.netty.handler.codec.http.multipart.HttpPostRequestDecoder.parseBodyAttributes()

Изучив метод, я обнаружил, что netty считывает данные, которые я передал, а затем делает какие-то суждения одно за другим.

switch (currentStatus) {
case DISPOSITION:// search '='
     // other code
    break;
case FIELD:// search '&' or end of line
    // other code
    break;
default:
    // just stop
    sao.setReadPosition(0);
    contRead = false;
    break loop;
}

Я заметил, что в комментарии говорится о запросе двух символов «=» и «&». При попытке, моя статья содержит только "=", нажмите "Сохранить", и выдается сообщение об ошибке, как и ожидалось:
io.netty.handler.codec.http.multipart.HttpPostRequestDecoder$ErrorDataDecoderException: java.io.IOException: 文件名、目录名或卷标语法不正确。
Я снова попробовал "&", и тоже.

У меня пока нет конкретного решения, потому что ошибка - это частный метод netty.

Самый полезный комментарий

Нашел решение, https://juejin.im/post/5c63a028f265da2d9262c662

Конкретный метод:

  1. Создайте пакет в src / main / java: io.netty.handler.codec.http.multipart

  2. Найдите HttpPostStandardRequestDecoder.java в исходном коде, соответствующем netty-codec-http-4.1.30.Final.jar

  3. Скопируйте исходный код в пакет, созданный на первом шаге

  4. Найдите parseBodyAttributes() и добавьте следующий код в первую строку метода:

if(!this.request.headers().get("Content-Type").startsWith(APPLICATION_X_WWW_FORM_URLENCODED)){
          return;
}
  1. Используйте команду пакета maven для упаковки сказки

Все 6 Комментарий

Нашел решение, https://juejin.im/post/5c63a028f265da2d9262c662

Конкретный метод:

  1. Создайте пакет в src / main / java: io.netty.handler.codec.http.multipart

  2. Найдите HttpPostStandardRequestDecoder.java в исходном коде, соответствующем netty-codec-http-4.1.30.Final.jar

  3. Скопируйте исходный код в пакет, созданный на первом шаге

  4. Найдите parseBodyAttributes() и добавьте следующий код в первую строку метода:

if(!this.request.headers().get("Content-Type").startsWith(APPLICATION_X_WWW_FORM_URLENCODED)){
          return;
}
  1. Используйте команду пакета maven для упаковки сказки

Хм, после долгих поисков я обнаружил, что нижний слой Blade сообщил об ошибке. Сердце разбито. Сначала попробуйте свой метод.Благодарность

Спасибо за метод, но прочитав код, я не понял принципа. .Выражение незнания

Обновите зависимость Blade netty
<dependency> <groupId>io.netty</groupId> <artifactId>netty-codec</artifactId> <version>4.1.31.Final</version> </dependency>

Обновите зависимость Blade netty
<dependency> <groupId>io.netty</groupId> <artifactId>netty-codec</artifactId> <version>4.1.31.Final</version> </dependency>

Пробовал, а значит проблема не решаемая. . .

Нашел решение, https://juejin.im/post/5c63a028f265da2d9262c662

Конкретный метод:

  1. Создайте пакет в src / main / java: io.netty.handler.codec.http.multipart
  2. Найдите HttpPostStandardRequestDecoder.java в исходном коде, соответствующем netty-codec-http-4.1.30.Final.jar
  3. Скопируйте исходный код в пакет, созданный на первом шаге
  4. Найдите parseBodyAttributes() и добавьте следующий код в первую строку метода:
if(!this.request.headers().get("Content-Type").startsWith(APPLICATION_X_WWW_FORM_URLENCODED)){
          return;
}
  1. Используйте команду пакета maven для упаковки сказки
if(!this.request.headers().get("Content-Type").startsWith(APPLICATION_X_WWW_FORM_URLENCODED)){
          return;
}

Этот параметр меньше ↓

if(!this.request.headers().get("Content-Type").startsWith("application/x-www-form-urlencoded")){
            return;
 }

Идеальное решение👍
A(G1% (QH{7~MTO)O438YC5
A(G1% (QH{7~MTO)O438YC5

Была ли эта страница полезной?
0 / 5 - 0 рейтинги