Python|泛微Ecology附件下载接口

公司有一类流程,需要把所有的附件打包下载下来。手工下载会比较耗时,这里我们常尝试下通过脚本简单实现下附件的批量下载。
其实在《UiAuto|泛微Ecology系统附件下载插件》中,我通过ecology8的WSDL实现了文件的下载,但在实际运用中需要用账号密码获取session,还要封装docinfo信息才能实现上传和下载。这篇文章我们试下另一种方式的文件下载,并在完成批量下载后自动打包为压缩包文件。

过程分析

关于下载地址:打开一个流程手工下载一个文件,就可以在F12中看到下载地址。
关于下载清单:因为只使用一次,所以通过sql单独查询出待下载的文件清单,并整理为列表进行后续批量下载。
关于认证信息:在F12中可以看到下载文件时需要传入cookie。

SQL

1
select '("'+b.lastname+'","'+c.departmentname+'",'+ cast(d.imagefileid as VARCHAR(max))+'),'  from formtable_main_274 a left join HrmResource b on a.ngr=b.id left join HrmDepartment c on a.ngbm=c.id left join DocImageFile d on cast(d.docid as VARCHAR(max))=cast(a.sfzsmj as VARCHAR(max)) where a.sfzsmj is not null

源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import shutil
import requests

# 生成压缩包
def zip_dir(basename,format,root_dir):
shutil.make_archive(base_name=basename,format=format,root_dir=root_dir)

def getCookies(cookie_str):
# 将字符串按照 ';' 分割
cookie_items = cookie_str.split(';')
# 初始化一个空字典
cookie_dict = {}
# 遍历每一个cookie项
for item in cookie_items:
# 按照 '=' 分割每一项,分割后的第一项是key,第二项是value
key, value = item.strip().split('=', 1)
# 将key和value加入到字典中
cookie_dict[key] = value
return cookie_dict

def getFiles(cookies,fileid) :
# 封装headers
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0',
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
'Host': 'portal.jictrust.cn',
'Pragma': 'no-cache',
}
# 创建params
params = (
('download', '1'),
('fileid', fileid),
)
# 创建请求,获取文件内容
response = requests.get('http://id/weaver/weaver.file.FileDownload', headers=headers, params=params, cookies=cookies)
return(response)

def downloadFiles(response,username,depart):
# 保存文件
path = r'C:\Users\admin\Documents\workspace\下载泛微文件夹\download\{}_{}.pdf'.format(username,depart)
with open(path ,'wb') as f:
f.write(response.content)
print('文件下载完成')
# print(response.content)

if __name__ == '__main__':
# 粘贴浏览器中复制的cookies信息
cookies = '''复制的cookies信息粘贴到这里'''
# SQL查询的待下载清单以列表形式进行查询
allMsg = [("姓名1","部门1",1234),("姓名2","部门2",5678)]
cookies = getCookies(cookies)
# 便利列表,下载文件
for msg in allMsg:
response = getFiles(cookies,msg[2])
downloadFiles(response,msg[0],msg[1])
# 创建压缩包
basename = r'C:\Users\admin\Documents\workspace\下载泛微文件夹\身份证扫描件导出'
root_dir = r'C:\Users\admin\Documents\workspace\下载泛微文件夹\download'
zip_dir(basename=basename,format='zip',root_dir=root_dir)

商业转载请联系作者获得授权,非商业转载请注明出处。

支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

Python|泛微Ecology附件下载接口
http://hncd1024.github.io/2023/11/13/Ecology_FileDownload/
作者
CHEN DI
发布于
2023-11-13
许可协议