前端有一个大的arraybuffer,要走form提交到server端,希望能尽量压缩。
我现在的做法是先 LZF压缩,再BASE64编码,然后传。
请问对于二进制数据的form提交,BASE64是空间上最节约的的编码方式么?或者有其他思路?
我现在的做法是先 LZF压缩,再BASE64编码,然后传。
请问对于二进制数据的form提交,BASE64是空间上最节约的的编码方式么?或者有其他思路?
|
1
BASE64 挺浪费空间的... 直接提交就行了呗...
|
|
2
arraybuffer是什么,前端表示JS里没这东西。
|
|
3
|
|
4
multipart? 也可以不用表单直接二进制传
|
|
5
切成两个或以上传不就好了…
|
|
6
哦,这个还没关注过。直接把它交给FormData有什么问题
|
|
7
不能做成 <input type="file"> ?
|
|
8
Base64之后给flash.
用flash解base64,上传压缩后的二进制 |
|
9
base64就变大了。。。。
|
|
10
@alexrezit
@duhastmich @FrankFang128 @yuelang85 解释一下:数据比较多,几百KB级别,又是给面向手机的,所以想尽量节省网络流量。 如果直接post提交arraybuff的二进制数据,实际上在传输的过程当中是uri encode成%FF%FF的形式传输的,那么针对一个32位的数据,实际传输“%FF%FF%FF%FF”,一共是12个ascii字符。 如果先转base64,实际上是6位转为一个ascii字符,那么32位只需要不到6个ascii字符,在传输上节省了一半空间。 想知道还有没有更高效的传输方式。 |
|
11
@10iii
直接传不行? form data req 发过去原来是什么样还是什么样, 怎么会遇到 URL encode 的问题? |
|
12
是不是 POST 的时候使用了 application/x-www-form-urlencoded ?照 @duhastmich 说的使用 multipart/form-data 呢?
|
|
14
页面里就用<input type="file" />,表单类型就是multipart/form-data。
要是直接用代码post,再继续加个gzip。 |
|
15
lz不会是说放到url不够长吧…
|
|
16
|