
1 alexrezit 2013-12-20 10:44:58 +08:00 BASE64 挺浪费空间的... 直接提交就行了呗... |
2 FrankFang128 2013-12-20 10:47:42 +08:00 via Android arraybuffer是什么,前端表示JS里没这东西。 |
3 ijse 2013-12-20 10:50:08 +08:00 |
4 duhastmich 2013-12-20 10:51:02 +08:00 multipart? 也可以不用表单直接二进制传 |
5 loading 2013-12-20 10:54:03 +08:00 via iPhone 切成两个或以上传不就好了… |
6 FrankFang128 2013-12-20 11:03:07 +08:00 via Android 哦,这个还没关注过。直接把它交给FormData有什么问题 |
7 dreampuf 2013-12-20 11:21:08 +08:00 不能做成 <input type="file"> ? |
8 ETiV 2013-12-20 11:24:27 +08:00 via iPhone Base64之后给flash. 用flash解base64,上传压缩后的二进制 |
9 yuelang85 2013-12-20 11:32:54 +08:00 base64就变大了。。。。 |
10 10iii OP @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 alexrezit 2013-12-20 12:10:13 +08:00 via iPad @10iii 直接传不行? form data req 发过去原来是什么样还是什么样, 怎么会遇到 URL encode 的问题? |
12 joyjy 2013-12-20 12:32:55 +08:00 是不是 POST 的时候使用了 application/x-www-form-urlencoded ?照 @duhastmich 说的使用 multipart/form-data 呢? |
13 Mutoo 2013-12-20 12:59:07 +08:00 @10iii post本身就支持二进制的,“不然怎么上传图片”。你在开发工具里看到的 uri encode 是浏览器为了显示自动帮你转的。 |
14 icyalala 2013-12-20 13:58:19 +08:00 页面里就用<input type="file" />,表单类型就是multipart/form-data。 要是直接用代码post,再继续加个gzip。 |
15 loading 2013-12-20 14:15:21 +08:00 via iPhone lz不会是说放到url不够长吧… |
16 10iii OP |