рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдерд╛ред рдЪреВрдБрдХрд┐ рдХреБрдЫ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд┐рдПред
рдЬрдм рд░рд┐рдЬрд▓реНрдЯ рд╕реЗрд╡ рдХрд┐рдпрд╛ рдЧрдпрд╛ рддреЛ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рдПрд░рд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
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()
рд╡рд┐рдзрд┐ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдиреЗрдЯреНрдЯреА рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝ рд░рд╣реА рдереА, рдФрд░ рдлрд┐рд░ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд░реНрдгрдп рд▓реЗ рд░рд╣реА рдереАред
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: цЦЗф╗╢хРНуАБчЫох╜ХхРНцИЦхН╖цаЗшпнц│Хф╕НцнгчбоуАВ
рдореИрдВрдиреЗ рдлрд┐рд░ рд╕реЗ "&" рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ред
рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рддреНрд░реБрдЯрд┐ рдиреЗрдЯреНрдЯреА рдХреА рдПрдХ рдирд┐рдЬреА рд╡рд┐рдзрд┐ рд╣реИред
рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛, https://juejin.im/post/5c63a028f265da2d9262c662
рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рд╣реИ,
src/main/java рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдБ: io.netty.handler.codec.http.multipart
netty-codec-http-4.1.30.Final.jar рдХреЗ рдЕрдиреБрд░реВрдк рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ HttpPostStandardRequestDecoder.java
рдЦреЛрдЬреЗрдВ
рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдкреИрдХреЗрдЬ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ
parseBodyAttributes()
рдвреВрдВрдвреЗрдВ, рдФрд░ рд╡рд┐рдзрд┐ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
if(!this.request.headers().get("Content-Type").startsWith(APPLICATION_X_WWW_FORM_URLENCODED)){
return;
}
рд╣рдореНрдо, рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдмреНрд▓реЗрдб рдХреА рдирд┐рдЪрд▓реА рдкрд░рдд рдиреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд╕реВрдЪрдирд╛ рджреАред рджрд┐рд▓ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рдЕрдкрдирд╛ рддрд░реАрдХрд╛ рдЖрдЬрдорд╛рдПрдВредрдзрдиреНрдпрд╡рд╛рдж
рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ рдкрдврд╝рдХрд░, рдореБрдЭреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ред .рдЕрдЬреНрдЮрд╛рдирддрд╛ рд╡реНрдпрдХреНрдд рдХрд░рдирд╛
рдмреНрд▓реЗрдб рдиреЗрдЯреНрдЯреА рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-codec</artifactId>
<version>4.1.31.Final</version>
</dependency>
рдмреНрд▓реЗрдб рдиреЗрдЯреНрдЯреА рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ
<dependency> <groupId>io.netty</groupId> <artifactId>netty-codec</artifactId> <version>4.1.31.Final</version> </dependency>
рдХреЛрд╢рд┐рд╢ рдХреА, рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред . .
рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛, https://juejin.im/post/5c63a028f265da2d9262c662
рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рд╣реИ,
- src/main/java рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдБ:
io.netty.handler.codec.http.multipart
- netty-codec-http-4.1.30.Final.jar рдХреЗ рдЕрдиреБрд░реВрдк рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ
HttpPostStandardRequestDecoder.java
рдЦреЛрдЬреЗрдВ- рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдкреИрдХреЗрдЬ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ
parseBodyAttributes()
рдвреВрдВрдвреЗрдВ, рдФрд░ рд╡рд┐рдзрд┐ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ: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;
}
рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдиреАрдЪреЗ рд╣реИ
if(!this.request.headers().get("Content-Type").startsWith("application/x-www-form-urlencoded")){
return;
}
рд╕рд╣реА рд╕рдорд╛рдзрд╛рдиЁЯСН
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛, https://juejin.im/post/5c63a028f265da2d9262c662
рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рд╣реИ,
src/main/java рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдБ:
io.netty.handler.codec.http.multipart
netty-codec-http-4.1.30.Final.jar рдХреЗ рдЕрдиреБрд░реВрдк рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ
HttpPostStandardRequestDecoder.java
рдЦреЛрдЬреЗрдВрд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдкреИрдХреЗрдЬ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ
parseBodyAttributes()
рдвреВрдВрдвреЗрдВ, рдФрд░ рд╡рд┐рдзрд┐ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ: