我目前正在进行一个项目,该项目要求我使用AngularJS的$http.post
将Base64编码的文件内容上传到服务器,文件内容将被转换并保存到远程存储库。
我上传的文件大约2.31 MB,但是服务器通过$http.post
方式接收到文件内容后,文件内容只有68k !发生了什么事?
我很确定,因为我的文件内容是在Base64格式,我没有字符串终止的问题,由于嵌入的空,我吗?
我主要想知道$http.post
方法是否有字节限制。我没有在别的地方找到我的答案。
我应该把我的文件内容切碎,告诉服务器我正在开始上传,对服务器进行多次上传,然后告诉服务器我完成了吗?
我真傻…
所以,整个2.31 MB都传递给了服务器,但是我只分配了一个略低于65K (TCP/IP数据包的最大限制)的缓冲区,从而截断了文件内容。很简单,我只需要在重构数据包之后,使缓冲区大小对传入数据包是动态的。谢谢大家的帮助。
我引用了这个问题的第三个答案:
也许你有一个&在content变量中。然后之后的所有内容都将被剥离。
所以也许在base64编码的文件中,单独在某个地方有一个&
,第68000个字符切断了文件的其余部分,因为它认为附加了另一个请求。
例如:http://www.example.com?post=324b6bjgj5jhg&fgdhgtuhuf
将$_GET['post']
显示为324b6bjgj5jhg
而不是324b6bjgj5jhg&fgdhgtuhuf
。&
让它认为还有另一个变量。我知道这是GET
请求,但我猜POST
也可能发生类似的事情。