首页 新闻 会员 周边

关于压缩传输

0
悬赏园豆:15 [已解决问题] 解决于 2016-02-15 18:39

需要在网页上传输一段很长的字符串,但是会报“Request URL Too Long”的异常,求高手推荐比较高效的压缩与解压缩方式

不要问我从哪里来123的主页 不要问我从哪里来123 | 初学一级 | 园豆:6
提问于:2016-02-15 17:04
< >
分享
最佳答案
0

URL存在长度上限,如果用get方式传输,局限性很大,即使通过压缩,也不会很理想。因为本身长度很小。如果是post传输,基本不可能存在内容过大。对于压缩方面,看具体内容吧,是否存在汉字,符号是否很多。具体的去搜索字符串压缩方面的吧。最终还是建议post传输,理论上post无大小限制

收获园豆:10
小风疏雨 | 初学一级 |园豆:128 | 2016-02-15 17:15

我这边用的是<a href="@Url.Action(  的方法,刚接触web,不是特别明白这几种方法

不要问我从哪里来123 | 园豆:6 (初学一级) | 2016-02-15 17:31

@不要问我从哪里来123: 这种情况,简单的实现就是通过js实现。点击a标签触发事件,提交form表单。form表单中包含需要提交的数据

小风疏雨 | 园豆:128 (初学一级) | 2016-02-15 17:58

@小风疏雨: 请问一下,我这边传输的字符长度大概有1.7万,感觉post也hold不住了,请问下有解决方法吗

不要问我从哪里来123 | 园豆:6 (初学一级) | 2016-02-15 18:34

@不要问我从哪里来123: 1英文字符=1B,1.7W的话17K左右,完全可以。主流服务器处理100K的post表单没问题

小风疏雨 | 园豆:128 (初学一级) | 2016-02-15 19:15

@小风疏雨: 我发现我用post方法加载的参数全都显示在url里面了,造成url太长,请问有比较好的解决方法吗

不要问我从哪里来123 | 园豆:6 (初学一级) | 2016-02-16 09:40

@不要问我从哪里来123:  把参数放入请求体里,不要放在url上。post传输,参数放在url上,url的参数仍然是get方式传输。既然用的html标签,那就写个form表单,表单上声明method=post action=url(只要?前面的),form元素中写<input /> name=参数名,value=需要放置的值。最后a标签href=javascript: onclick=一个js方法,通过js提交表单

小风疏雨 | 园豆:128 (初学一级) | 2016-02-16 09:50

@小风疏雨: 请问一下可以设置“只要显示前面的,不用显示参数”这个可以设置吗?

不要问我从哪里来123 | 园豆:6 (初学一级) | 2016-02-16 10:22

@不要问我从哪里来123: 

<form method="post" action="@Url.Action("Po", "Lo", new
                                     {
                                        SystemInfo = Info
                                     })" enctype="multipart/form-data">
                                        <input type="submit" value="下载" />
                                    </form>

我这样写,url里面还是加载了

不要问我从哪里来123 | 园豆:6 (初学一级) | 2016-02-16 10:25

@不要问我从哪里来123: action 后只写url的地址,不带参数,<input type="hidden" name=“属性名” value="属性值" />

小风疏雨 | 园豆:128 (初学一级) | 2016-02-16 10:27

@小风疏雨: 谢谢你的耐心解答,学习到了

不要问我从哪里来123 | 园豆:6 (初学一级) | 2016-02-16 10:54
其他回答(3)
0

不要用GET方式,用POST方式,具体请看资料

HTTP 方法:GET 对比 POST

收获园豆:5
爱编程的大叔 | 园豆:30839 (高人七级) | 2016-02-15 17:07

我这边用的是<a href="@Url.Action(  的方法,刚接触web,不是特别明白这几种方法

@不要问我从哪里来123: 

简单的说,GET就是你可以在浏览器地址栏看到的字符串,

POST就是提交,URL看不到的。

GET有长度限制,大概是512之类的。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2016-02-15 17:35

@爱编程的大叔: 请问一下哈,那我用<a href="@Url.Action("","",)"></a>这种方法来将参数传给指定控制器,但是报了“Request URL Too Long”的异常,请问一下这种情况下是不是也需要改成Post方法哈

0

压缩解决不了问题,要么修改web服务器的设置,要么将数据放在post body中传输。

如果是IIS,需要修改以下2个注册表设置:

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters /v MaxFieldLength /t REG_DWORD /d 32768
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters /v MaxRequestBytes /t REG_DWORD /d 32768
dudu | 园豆:31003 (高人七级) | 2016-02-15 17:08
0

你这跟压不压没关系.就算压了结果任然有可能超过限制.

照你的说法,你的数据是在服务端生成的.那你只要传个数据库ID在在服务端再去取就是了

吴瑞祥 | 园豆:29449 (高人七级) | 2016-02-15 17:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册