最近客户端上有个发送图文的需求,大致是添加图片,文本数据然后发送。

一般像这样的情况都是有个单独上传图片的接口,返回上传图片的路径,发送信息的接口接收这个图片地图参数,信息存储的数据库。

测试中期需要造一些数据来进行测试及观察整体效果,图片上传是个很费事的手机活,那么我又想到了python http神器requests

还是直接上代码加注释吧

 1 #-*-coding:utf-8 -*-
 2 __author__ = \'DongJie\'
 3 import requests
 4 import glob
 5 import os
 6 import time
 7 import random
 8 import urllib
 9 import sys
10 reload(sys)
11 sys.setdefaultencoding(\'utf-8\')
12 
13 #选择测试(从测试图片目录随机选择多张图片)
14 def chosePic(number):
15     pic_list = glob.glob(\'E:\\testpic\\*.jpg\')
16     up_pic = random.sample(pic_list, number)
17     return up_pic
18 
19 
20 #上传测试图片(通过接口将图片上传至服务器,得到服务器返回的路径:http图片上传是以二进制附件流上传到服务器的)
21 def upPic(pic_list):
22     up_url = \'127.0.0.1/api/User?sort=tourDating\'
23     re = []
24     for pic in pic_list:
25         f = open(u\'%s\' % pic, \'rb\')
26         files = {\'file\':[os.path.split(pic)[-1], f, \'application/octet-stream\']}
27         req = requests.post(up_url, files=files)
28         server_path = req.json()[0]
29         re.append(server_path)
30     path = \',\'.join(re)
31     return path
32 
33 
34 #这是一个应该用接口
35 def sendYue(account, content, startTime, endTime, lat, lng, address, isNearVisible, picList, contactInformation):
36     add = "http://127.0.0.1/api/TourDating/Publish"
37     value = {\'accountId\':account,
38              \'content\':content,
39              \'startTime\':startTime,
40              \'endTime\':endTime,
41              \'lat\':lat,
42              \'lng\':lng,
43              \'address\':address,
44              \'isNearVisible\':isNearVisible,
45              \'picList\':picList,
46              \'contactInformation\':contactInformation}
47     #必须用urlencode将参数值编码
48     args = urllib.urlencode(value)
49     send_url = add + \'?\' + args
50     try:
51         req = requests.post(send_url)
52         return req.json()
53     except Exception, e:
54         print e
55 
56 
57 if __name__ == "__main__":
58     #从account取已经从数据库取出来用户ID数据
59     account_list = open(\'account\', \'r\').readlines()
60     #地置数据(位置名称\t经度\t纬度)当然也可以做成你自己文本格式,容易解析最好
61     where = open(\'coordinate\', \'r\').readlines()
62     position = [x.strip().split(\'\t\') for x in where if x!=\'\']
63     content_all = open(\'content\', \'r\').read()
64     for x in range(180):
65         account = account_list[x].strip()
66         address = position[x][0]
67         lng = position[x][1]
68         lat = position[x][2]
69         #内容也是从一个文本里面随机(10-140个字)这个根据自己的需要
70         content = \'\'.join(random.sample(content_all.decode(\'utf-8\'), random.randint(10, 140)))
71         #下面是我随机开始时间和结束时间的方法(从一个时间戳段中取一个值,然后往后推随机天数)
72         t = random.randint(1433541966,1451581261)
73         startTime = time.strftime(\'%Y-%m-%d\', time.localtime(t))
74         endTime = time.strftime(\'%Y-%m-%d\',time.localtime(t+random.randint(1,60)*86400))
75         #这个参数也是一个随机数了
76         contactInformation = random.randint(111111,19999999999)
77         #0和1随机取一个
78         isNearVisible = random.randint(0,1)
79         #上传图片返回的路径在这里用到
80         picList = upPic(chosePic(random.randint(1,3)))
81         #发送请求造数据
82         sendYue(account, content, startTime, endTime, lat, lng, address, isNearVisible, picList, contactInformation)

代码很多地方偷了懒,特别是对文件操作,大家别学。

版权声明:本文为donjor原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/donjor/p/4873794.html