使用request包的post方式提交base64格式的参数值的奇怪问题
发布于 2 天前 作者 xiashulin 165 次浏览 来自 问答

var queryData = { “a”: “1”, “b”: “2”, “c”: “3”, “d”: { “code_str”: “/9j/4AAQSkZJRgABAg……” } }; 以上code_str的值就是base64格式的字符串,就是一个图片。 var options = { method: ‘POST’, url: ‘http://localhost:8088/api/checkcode’, form: { ‘j’: JSON.stringify(queryData) }, }; 然后用request(options,function(err,res,body){});来发送请求

奇怪的问题就在于本地接收的这个请求程序(http://localhost:8088)获取不到参数j,但如果code_str参数值没有那么长,就能获取到j参数值。 求各路大神大仙指教。

5 回复

base64采用urlsafe模式, 即把’/’’+‘分别用’+’,'替换掉.

同样的参数,有时候能获取到,有时候获取不到,极其不稳定。我就怀疑是不是node.js不能一次性post这种大量的数据(其实也不大啊,就16000个字符长度),但是我使用火狐浏览器的httprequester工具,用同样的参数post到同样的地址,每次接收请求的程序就能正常获取到。

希望有同学能自己写个示例试一下,就是发请求的程序用node.js request写,post的数据就找个图片,转化成base64编码,然后再有个node.js的接收服务。可以测下看看。

把那一长串参数放在 请求路径后面?j=xxxx…… ,这样post就没有问题了

encodeURICompent(JSON.stringify(queryData))

回到顶部