markdown 内容过长时后台报错
zaoangod opened this issue · comments
2019/01/09 16:04:23 ERROR [ worker@thread-3 ] c.b.m.h.DefaultExceptionHandler : io.netty.handler.codec.http.multipart.HttpPostRequestDecoder$ErrorDataDecoderException: java.io.IOException: Unable to create temporary file, C:\Users\zaoangod\AppData\Local\Temp\Attr_7037299340806213142_{"cid":"","title":"原生 JS 代替 jQuery","slug":"","tags":"","content":"# Query Selector\n\n常用的 class、id、属性选择器都可以使用 `document.querySelector` 或 `document.querySelectorAll` 替代。区别是\n* `document.querySelector` 返回第一个匹配的 Element\n* `document.querySelectorAll` 返回所有匹配的 Element 组成的 NodeList。它可以通过 `[].slice.call()` 把它转成 Array\n\n> 注意: `document.querySelector` 和 `document.querySelectorAll` 性能很差。如果想提高性能,尽量使用 `document.getElementById`、 `document.getElementsByClassName` 或 `document.getElementsByTagName`\n\n## 选择器查询\n```js\n\ jQuery\n$('selector');\n\n\ Native\ndocument.querySelectorAll('selector');\n```\n\n## class 查询\n```js\n\ jQuery\n$('.class');\n\n\ Native\ndocument.querySelectorAll('.class');\n\ or\ndocument.getElementsByClassName('class');\n```\n\n## id 查询\n```js\n\ jQuery\n$('#id');\n\n\ Native\ndocument.querySelector('#id');\n\ or\ndocument.getElementById('id');\n```\n\n## 属性查询\n```js\n\ jQuery\n$('a[target.att
at io.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.parseBodyAttributes(HttpPostStandardRequestDecoder.java:605)
at io.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.parseBody(HttpPostStandardRequestDecoder.java:360)
at io.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.offer(HttpPostStandardRequestDecoder.java:289)
at io.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.offer(HttpPostStandardRequestDecoder.java:46)
at io.netty.handler.codec.http.multipart.HttpPostRequestDecoder.offer(HttpPostRequestDecoder.java:227)
at com.blade.mvc.http.HttpRequest.init(HttpRequest.java:359)
at com.blade.server.netty.HttpServerHandler.buildWebContext(HttpServerHandler.java:95)
at com.blade.server.netty.HttpServerHandler.lambda$channelRead0$0(HttpServerHandler.java:84)
at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:602)
at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577)
at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:442)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:163)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:462)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: Unable to create temporary file, C:\Users\zaoangod\AppData\Local\Temp\Attr_7037299340806213142_{"cid":"","title":"原生 JS 代替 jQuery","slug":"","tags":"","content":"# Query Selector\n\n常用的 class、id、属性选择器都可以使用 `document.querySelector` 或 `document.querySelectorAll` 替代。区别是\n* `document.querySelector` 返回第一个匹配的 Element\n* `document.querySelectorAll` 返回所有匹配的 Element 组成的 NodeList。它可以通过 `[].slice.call()` 把它转成 Array\n\n> 注意: `document.querySelector` 和 `document.querySelectorAll` 性能很差。如果想提高性能,尽量使用 `document.getElementById`、 `document.getElementsByClassName` 或 `document.getElementsByTagName`\n\n## 选择器查询\n```js\n\ jQuery\n$('selector');\n\n\ Native\ndocument.querySelectorAll('selector');\n```\n\n## class 查询\n```js\n\ jQuery\n$('.class');\n\n\ Native\ndocument.querySelectorAll('.class');\n\ or\ndocument.getElementsByClassName('class');\n```\n\n## id 查询\n```js\n\ jQuery\n$('#id');\n\n\ Native\ndocument.querySelector('#id');\n\ or\ndocument.getElementById('id');\n```\n\n## 属性查询\n```js\n\ jQuery\n$('a[target.att
at java.io.File$TempDirectory.generateFile(File.java:1921)
at java.io.File.createTempFile(File.java:2010)
at java.io.File.createTempFile(File.java:2070)
at io.netty.handler.codec.http.multipart.AbstractDiskHttpData.tempFile(AbstractDiskHttpData.java:90)
at io.netty.handler.codec.http.multipart.AbstractDiskHttpData.addContent(AbstractDiskHttpData.java:163)
at io.netty.handler.codec.http.multipart.DiskAttribute.addContent(DiskAttribute.java:99)
at io.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.setFinalBuffer(HttpPostStandardRequestDecoder.java:614)
at io.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.parseBodyAttributes(HttpPostStandardRequestDecoder.java:539)
... 16 more
文章中有 = 会报错
这是一个部署在服务器上的软件,我怀疑去修复这个BUG真的有意义吗
试了很多遍,文章中有“=”发布不成功
兄弟,好歹说个什么原因怎么解决啊.你这贴的一大串东西是个啥?
兄弟,好歹说个什么原因怎么解决啊.你这贴的一大串东西是个啥?
暂时没找到解决办法, 是内容中有特殊符号(比如等号=
)会报错
兄弟,好歹说个什么原因怎么解决啊.你这贴的一大串东西是个啥?
暂时没找到解决办法, 是内容中有特殊符号(比如等号
=
)会报错
哈哈哈 我也是心态蹦蹦哒,现在换用ghost写了
兄弟,好歹说个什么原因怎么解决啊.你这贴的一大串东西是个啥?
暂时没找到解决办法, 是内容中有特殊符号(比如等号
=
)会报错
我把项目拉下来debug跑,调了一个多小时没搞定。。。。
兄弟,好歹说个什么原因怎么解决啊.你这贴的一大串东西是个啥?
暂时没找到解决办法, 是内容中有特殊符号(比如等号
=
)会报错哈哈哈 我也是心态蹦蹦哒,现在换用ghost写了
我也搞不定, 准备用 sparkjava 重构一个blog
兄弟,好歹说个什么原因怎么解决啊.你这贴的一大串东西是个啥?
暂时没找到解决办法, 是内容中有特殊符号(比如等号
=
)会报错哈哈哈 我也是心态蹦蹦哒,现在换用ghost写了
我也搞不定, 准备用 sparkjava 重构一个blog
如果你们不想折腾我建议你们用Jekyll或者hexo
新建一个 HttpPostStandardRequestDecoder.java 文件包名 io.netty.handler.codec.http.multipart;
复制 netty下io.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder 的内容
parseBodyAttributes 中最前面添加
if (!this.request.headers().get("Content-Type").startsWith("application/x-www-form-urlencoded")) {
return;
}