Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- import mimetypes
- import os
- def get_url(url='https://video-oss.vercel.app/link'):
- try:
- response = requests.get(url)
- response.raise_for_status() # 抛出异常处理HTTP错误
- return response.text
- except requests.exceptions.RequestException as e:
- print(f"获取上传地址失败: {e}")
- return None
- def upload_file(file_path, url=None, chunk_size=1024, max_size=5 * 1024 * 1024 * 1024):
- """
- 上传文件
- Args:
- file_path: 文件路径
- url: 上传地址
- chunk_size: 每次上传的块大小
- max_size: 最大上传文件大小 (字节)
- """
- if not url:
- url = get_url()
- if not url:
- return
- try:
- file_size = os.path.getsize(file_path)
- if file_size > max_size:
- raise ValueError(f"文件过大,最大允许上传 {max_size} 字节")
- with open(file_path, 'rb') as f:
- response = requests.put(url, data=f, headers={
- 'Content-Type': mimetypes.guess_type(file_path)[0]
- }, stream=True)
- for chunk in response.iter_content(chunk_size):
- if chunk:
- # 你可以在这里添加自定义的进度显示逻辑
- # 例如,每上传一定数量的字节,打印一次进度信息
- # print(f"已上传 {len(chunk)} 字节")
- response.raise_for_status() # 抛出异常处理HTTP错误
- print(f"上传成功: {url}")
- except (IOError, OSError) as e:
- print(f"文件操作失败: {e}")
- except requests.exceptions.RequestException as e:
- print(f"上传失败: {e}")
- except ValueError as e:
- print(e)
- if __name__ == '__main__':
- import sys
- if len(sys.argv) < 2:
- print("请提供要上传的文件路径作为参数")
- sys.exit(1)
- file_path = sys.argv[1]
- upload_file(file_path)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement