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