122 lines
4.0 KiB
Markdown
122 lines
4.0 KiB
Markdown
接口应在服务端调用,不可在前端(小程序、网页、APP等)直接调用。具体可参考[接口接入指南](https://www.yuque.com/shunchenghuichuang/iasgxw/lw3ftk64nq0f2gsg)。
|
|
|
|
接口英文名:UploadPic
|
|
|
|
<font style="color:rgb(34, 34, 34);">本接口用于上传图片信息</font>。使用Form表单形式提交这些参数
|
|
|
|
## 1、调用方式
|
|
### HTTPS调用
|
|
`POST <font style="color:rgb(52, 64, 84);">/api/app/upload</font>`
|
|
|
|
## 2、请求参数
|
|
### <font style="color:rgb(34, 34, 34);">请求体 </font>`<font style="color:rgb(34, 34, 34);">Request Payload</font>`
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
| :--- | :--- | :--- | :--- |
|
|
| version | string | 否 | 版本号,服务商可自由定义 |
|
|
| reqSerialNo | string | 是 | 请求流水号(yyyyMMddHHmmssSSSXXXXX,其中 XXXXX为5位顺序号,禁止使用UUID等无意义数据) |
|
|
| sign | string | 是 | 签名 |
|
|
| media | File | 是 | 图片文件 |
|
|
|
|
|
|
## 3、返回参数
|
|
### <font style="color:rgb(34, 34, 34);">返回体 </font>`<font style="color:rgb(34, 34, 34);">Response Payload</font>`
|
|
| 参数名 | 类型 | 说明 |
|
|
| :--- | :--- | :--- |
|
|
| respCode | string | 200是成功,其他值就是失败 |
|
|
| respMsg | string | 接口返回的信息,成功返回null |
|
|
| reqSerialNo | string | 接口请求流水号 |
|
|
| version | string | 接口版本 |
|
|
| data | object | 图片地址 |
|
|
|
|
|
|
#### `data响应参数`
|
|
| 参数名 | 类型 | 说明 |
|
|
| :--- | :--- | :--- |
|
|
| photoUrl | string | 图片地址。<br/>图片上传成功后,该图片保存在交易中心中的地址。<br/><font style="color:#E8323C;">注:其他相关接口需要提供图片文件地址时,直接使用该地址即可。</font> |
|
|
|
|
|
|
## 4、注意事项
|
|
1、content-type格式为multipart/form-data
|
|
|
|
## 5、代码示例
|
|
请求参数:
|
|
|
|
```json
|
|
{
|
|
"version": "1.0",
|
|
"reqSerialNo": "20221013152000",
|
|
"sign":"OWJmY2Q4OTQ1NDFhOTE4YzkxOWVhNTI2NGQ4MTE0ODM=",
|
|
"media":File
|
|
}
|
|
```
|
|
|
|
|
|
|
|
python示例:
|
|
|
|
```python
|
|
import requests
|
|
import hashlib
|
|
import base64
|
|
import datetime
|
|
import json
|
|
import os
|
|
|
|
##定义流水号生成方法
|
|
def reqSerialNo():
|
|
now = datetime.datetime.now()
|
|
order_id = now.strftime("%Y-%m-%d-%H-%M-%S").replace("-", "")
|
|
return order_id
|
|
|
|
def get_image_files(directory):
|
|
"""获取指定目录及其子目录中的所有图片文件"""
|
|
image_extensions = {'.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.webp', '.ico'}
|
|
image_files = []
|
|
for root, dirs, files in os.walk(directory):
|
|
for file in files:
|
|
ext = os.path.splitext(file)[1].lower()
|
|
if ext in image_extensions:
|
|
image_files.append(os.path.join(root, file))
|
|
return image_files
|
|
|
|
|
|
##服务商参数
|
|
path = r"D:\Document" ## 这里图片保存的路径
|
|
img = "picture.png"
|
|
print(img)
|
|
file_name=os.path.join(img) ## 这里图片的名称
|
|
request_url="http://localhost:19001/api/app/upload" ## 这里填写请求的接口地址
|
|
token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJc1BheSI6IlRydWUiLCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6ImQ1ZTc3MzE2LTVjNWEtNDQ3OC1iZjZhLTQ2OWU2ODNlZDMyYyIsIm5iZiI6MTc2NzA3NDUwNywiZXhwIjoxNzY3MTYwOTA3fQ.YxjyLi_f4kiluQGZBmfjteKokaPyzk1QkrrvgazErwc"
|
|
|
|
file_md5 = hashlib.md5(open(file_name,'rb').read()).hexdigest()
|
|
files = {'media': open(file_name,'rb'),}
|
|
|
|
body = {
|
|
"reqSerialNo" : "2025121316252900001",
|
|
"sign" : "MDc5NDNmMTE5ZjM2OTBhNjliYjk5MGUzYjllMjNiMTI="
|
|
}
|
|
headers = {
|
|
"Authorization": f"Bearer {token}"
|
|
}
|
|
|
|
files = {'media': open(file_name,'rb'),}
|
|
req = requests.post(url=request_url, data=body,files=files,headers=headers) ## 注:python的request请求在做post请求时会自动加上Content-Type: multipart/form-data;boundary=${bound},因此本处可不填写headers
|
|
print(req.text)
|
|
```
|
|
|
|
|
|
|
|
返回参数:
|
|
|
|
```json
|
|
{
|
|
"respCode": "200",//200是成功,其他值就是失败
|
|
"respMsg": "string",
|
|
"reqSerialNo": "string",
|
|
"version": "string",
|
|
"data": {
|
|
"photoUrl": "string"
|
|
}
|
|
}
|
|
```
|