在开发中曾经遇到一个问题,前端界面需要往后台CRM上传文字和图片,实现方法主要分三步:
一:上传数据的接口参数
当后台确定了上传时需要接收的参数后,你需要做的是用类似键值对的方式给它传递value值,如下:
MultipartEntity entity = new MultipartEntity()
try {
entity
.addPart(
"source", new StringBody(
"6"))
entity
.addPart(
"linkMan", new StringBody(etCompanyLinkman
.getText()
.toString(), Charset
.forName(
"UTF-8")))
entity
.addPart(
"companyName", new StringBody(etCompanyName
.getText()
.toString(), Charset
.forName(
"UTF-8")))
entity
.addPart(
"cLicNum", new StringBody(etCompanyClicNum
.getText()
.toString()))
entity
.addPart(
"tel", new StringBody(SystemInfo
.getInstance(getApplicationContext())
.getPhone()))
entity
.addPart(
"companyProvince", new StringBody(province, Charset
.forName(
"UTF-8")))
entity
.addPart(
"companyCity", new StringBody(city, Charset
.forName(
"UTF-8")))
entity
.addPart(
"companyArea", new StringBody(district, Charset
.forName(
"UTF-8")))
if (uploadFiles != null && uploadFiles
.size() >
0) {
int picIndex =
1
for (int i =
0
entity
.addPart(
"pic" + picIndex, new FileBody(uploadFiles
.get(i),
"image/jpeg"))
picIndex++
}
}
} catch (UnsupportedEncodingException e1) {
e1
.printStackTrace()
}
二:验证json出来的字符串的正确性
主要还是根据服务端返回的json来判断上传的数据是否成功,成功则服务端给前端返回成功的信号来继续下一步操作
三:成功、失败、异常
根据不同情况去耗时操作中处理不同异常情况
而今天我要说的主要是第一步的上传数据的操作,如下图红色标记处:
在开始,此处没有加该参数,这时后台crm无法查看到我上传的图片,它的存储路径为:
upload/shopAudit/
2017/
11/
28/wl9SDdJKS02p3Bris658h8UWmAa0f5Dk
.png
咨询过后说要爱upload前加上斜杠——> /
但是代码中上传的只是图片,用流的方式上传,不会对后台存储路径造成改变,但是此时IOS的可以,路径前加了斜杠,于是很疑惑的我又查看了下代码,找了半天才知道,这是上传图片的方式导致的
图片头添加Content-
Type,“image/jpeg”
于是,问题就这样解决了,很揪心,但是依然表示代码层太高深,没能弄明白具体细节。
参考:http://blog.csdn.net/agods/article/details/7307677
http://blog.csdn.net/shareus/article/details/52203198