CNode

使用request包的post方式提交base64格式的参数值的奇怪问题

问答
Xxiashulin发布于10 年前最后回复10 年前5 回复6112 浏览0 收藏

声明参数对象

	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)

R
redhu#1·10 年前

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

X
xiashulin#2·10 年前

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

X
xiashulin#3·10 年前

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

X
xiashulin#4·10 年前

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

C
chloe#5·10 年前

encodeURICompent(JSON.stringify(queryData))

参与回复
登录后即可参与回复。登录