upload_url.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import requests
  2. import base64
  3. import hashlib
  4. import os
  5. import esigntool
  6. from esigntool import esign_run_print_outer, fileHelp
  7. # 印章服务API
  8. config = esigntool.config() # 初始化配置类
  9. @esign_run_print_outer
  10. def image_upload():
  11. """
  12. 上传印章图片
  13. :return:
  14. """
  15. contentType = "application/octet-stream"
  16. body = {
  17. "contentMd5": file.contentMd5,
  18. "contentType": contentType,
  19. "fileName": file.fileName,
  20. "fileSize": file.fileSize
  21. }
  22. api_path = "/v3/files/file-key" # 拼接请求路径
  23. method = esigntool.httpMethodEnum.POST # 声明请求方法
  24. json_headers = esigntool.buildSignJsonHeader(config.appId, config.scert,
  25. method, api_path, body) # 签名并构造签名鉴权json请求头
  26. resp = requests.request(method, config.host + api_path, json=body, headers=json_headers) # 发送请求
  27. print(resp.text)
  28. fileUploadUrl = resp.json()['data']['fileUploadUrl'] # 获取文件上传路径
  29. fileKey = resp.json()['data']['fileKey'] # 获取文件上传路径
  30. print("fileKey,请保存本地,用于后续获取图片:", fileKey)
  31. return fileUploadUrl
  32. @esign_run_print_outer
  33. def create_image(fileUploadUrl, binfile):
  34. """
  35. 创建个人图片印章
  36. :return:
  37. """
  38. # 构建请求body体
  39. contentMd5 = file.contentMd5 # 声明请求变量
  40. contentType = "application/octet-stream" # 声明请求变量
  41. method = esigntool.httpMethodEnum.PUT # 声明请求方法
  42. json_headers = esigntool.buildFileUploadHeader(contentType, contentMd5) # 构建请求头
  43. resp = requests.request(method, fileUploadUrl, data=binfile, headers=json_headers) # 发送请求
  44. print(resp.text)
  45. return resp
  46. if __name__ == '__main__':
  47. fileUrl = "D:\\1.jpg"
  48. file = fileHelp(fileUrl) # 初始化文件辅助类
  49. fileUploadUrl = image_upload() # 获取文件流上传地址
  50. create_image(fileUploadUrl, file.getBinFile()) # 上传文件流