otale / tale

🦄 Best beautiful java blog, worth a try

Home Page:https://tale.biezhi.me

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

文章中有 = 会报错

tale v2.0.5 添加超长文章 linux 环境下正常, 在 Win10 下报错

image

image

这是一个部署在服务器上的软件,我怀疑去修复这个BUG真的有意义吗

试了很多遍,文章中有“=”发布不成功

tale v2.0.5 添加超长文章 linux 环境下正常, 在 Win10 下报错

image

image

linux 下 超长,某些情况下(代码中)包含=号也是保存失败

兄弟,好歹说个什么原因怎么解决啊.你这贴的一大串东西是个啥?

兄弟,好歹说个什么原因怎么解决啊.你这贴的一大串东西是个啥?

暂时没找到解决办法, 是内容中有特殊符号(比如等号=)会报错

兄弟,好歹说个什么原因怎么解决啊.你这贴的一大串东西是个啥?

暂时没找到解决办法, 是内容中有特殊符号(比如等号=)会报错

哈哈哈 我也是心态蹦蹦哒,现在换用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;
    	}

参考:https://juejin.im/post/5c63a028f265da2d9262c662