| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- from config import load_service_config
- from io import BytesIO
- import os
- import pandas as pd
- import requests
- class FileStreamUtils:
- cfgs = load_service_config()
- upload_url = cfgs["aliyun"]["upload_url"]
- download_url = cfgs["aliyun"]["download_url"]
- # cookies = cfgs["aliyun"]['cookies']
- # 设置请求头
- headers = {
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
- "Accept": "*/*",
- }
-
- @staticmethod
- def upload_files(reports_dir, files):
- files_id = {}
- for filename in files:
- file_path = os.path.join(reports_dir, f'{filename}.xlsx')
- try:
- with open(file_path, 'rb') as f:
- files = {'file': (os.path.basename(file_path), f)}
- response = requests.post(
- FileStreamUtils.upload_url,
- headers=FileStreamUtils.headers,
- files=files,
- # cookies=FileStreamUtils.cookies,
- verify=True
- )
-
- if response.json()["success"]:
- file_id = response.json()["data"]["file_info"]["fileid"]
- files_id[filename] = file_id
- except requests.exceptions.RequestException as e:
- print("请求出错:", e)
- return None
- except Exception as e:
- return None
-
- return files_id
-
- @staticmethod
- def download_file(file_id, file_type='xlsx'):
- """通过file_id从阿里云文件数据库下载文件"""
- try:
- params = {
- 'fileid': file_id,
- 'action': 'download'
- }
-
- response = requests.get(
- FileStreamUtils.download_url,
- headers=FileStreamUtils.headers,
- # cookies=FileStreamUtils.cookies,
- params=params,
- verify=True
- )
-
- if response.status_code == 200:
- file_content = BytesIO(response.content)
- print('请求成功了')
- if file_type == 'xlsx':
- data = pd.read_excel(file_content)
- elif file_type == 'csv':
- data = pd.read_csv(file_content)
- else:
- raise ValueError(f"不支持的文件类型:{file_type}" )
-
- return data
- else:
- print(f'请求失败了{response.status_code}')
- return None
- except requests.exceptions.RequestException as e:
- print("Request Error: ", e)
- return None
- except Exception as e:
- print("File download Error: ", e)
- return None
-
- if __name__ == '__main__':
- # print(FileStreamUtils.cfgs["aliyun"]["cookies"])
- file_id = '11C1AC088863421C9BC32A5E722F5147'
-
- data = FileStreamUtils.download_file(file_id)
- data.to_excel('./recommend_list.xlsx', index=False)
|