
1 clanned 2015-03-26 09:16:58 +08:00 用http post,图片二进制做base64编码,其他参数同等的post参数,服务器解析base64再存图片就行了 |
2 vagrant OP @xdtianyu 这样需要服务器也做base64解码,关键是现在服务器已写好,只提供了一个api 要求post图片过去,同时需要传递一个String类型的参数过去。 |
4 vagrant OP @xdtianyu 所以我的问题是在服务器api写好的情况下, 怎么post图片和字段过去,因为是别人写的服务器端api, 只给了api地址和可传的字段的描述 |
5 liangzhitao 2015-03-26 09:52:23 +08:00 我们是用的七牛,你看下七牛的具体怎么实现的。 |
6 qiayue PRO multipart 这样后端不仅能接收你客户端的上传,也能接收网页的表单图片上传 |
8 vagrant OP @liangzhitao 这个好像没什么关系吧? |
9 kirisetsz 2015-03-26 10:01:56 +08:00 via Android 用 Spring 的话有 HttpEntity 对象可以用来构造实体… Retrofit 干脆什么都不用配置在 Interface 方法上加注 multipart 标签就好了。 手工构造一定是姿势不对咯 ('·ω·') 不过手工构造可读性也不错呢… 只是强迫症无法接受… |
10 vagrant OP @kirisetsz 请问下你说的HttpEntity大概是怎么实现的? 还有你上传图片都是怎么实现的呢? 不胜感激。纠结这问题很久了。 |
11 finian 2015-03-26 12:29:53 +08:00 看了你前面的回复,既然「关键是现在服务器已写好」,那就按服务器提供的 API 传,你说一下那个传图片的 API 具体长啥样 |
12 vagrant OP @finian http://****/upload POST请求 字段 类型 描述 备注 值条件 method String 上传头像的方法 logo 必填 这种形式 需要传图片过去,也需要弄个字段。没做过图片上传,请问 怎么做? |
14 finian 2015-03-26 12:48:54 +08:00 @vagrant 你们这 API 压根就没描述怎么传图片数据啊,请求体是用 multipart/form-data 呢还是 application/x-www-form-urlencoded 呢还是其他什么鬼,不写清楚让客户端怎么传。。。所以你还是先去问清楚这个 API 是以什么格式传的数据吧 |
16 clanned 2015-03-26 12:53:54 +08:00 @vagrant 点错感谢了 你那个api接口还是api的描述啊,要是服务端给你的接口你就去找服务端把详细的接收参数拿出来,具体post的是什么,“字段 类型 描述 备注 值条件”这些具体是什么字符难不成直接中文。图片上传是什么另类?post请求就是post请求,http传递的到底也就是字节流。Bitmap转到byte[]作为参数传出去。 |
18 finian 2015-03-26 13:05:08 +08:00 @qiayue 嗯,所以这个 API 描述就有问题,默认是 multipart/form-data 的话,还要指定接收图片的 name 字段、具体的图片数据的编码格式,这些信息都不知道的话客户端根本就没法调用 |
19 vagrant OP @qiayue 我想知道的是怎么写过去 用HttpURLConnection写在流中? 还是用HttpClient? 还是怎么弄? |
20 finian 2015-03-26 13:08:20 +08:00 @vagrant 。。。那你就说是什么格式的吧,按照这种格式去 post 数据就行,Android 很多网络库都有封装好的方法直接调用就行 |
21 finian 2015-03-26 13:13:47 +08:00 @vagrant 这样吧,你先说清楚请求体的 Content-Type 究竟是什么类型?multipart/form-data 还是 application/x-www-form-urlencoded 还是你们自定义的格式 |
22 vagrant OP @finian multipart/form-data 我想知道怎么传过去,一般参数的api地址的Content-Type是 application/x-www-form-urlencoded直接写入得到的输出流就可以了, 但是我不知道对于multipart/form-data 怎么同时弄图片和参数? |
23 finian 2015-03-26 13:27:17 +08:00 @vagrant 如果是 multipart/form-data 的话,那你的请求体就是类似这样的: ... Content-Type: multipart/form-data; boundary=xxx --xxx Content-Disposition: form-data; name="foo" bar --xxx Content-Disposition: form-data; name="pic" Content-Type: application/octet-stream <图片二进制数据> --xxx-- 所以你传图片数据(还有额外参数)时,按照 multipart/form-data 的格式构造请求体 post 过去就行。建议你用开源库,比如 OkHttp 之类的,构造请求体的方法都是封装好的 |