Advertisement
Guest User

Untitled

a guest
Sep 18th, 2024
707
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.95 KB | None | 0 0
  1. import requests
  2. import mimetypes
  3. import os
  4.  
  5. def get_url(url='https://video-oss.vercel.app/link'):
  6.     try:
  7.         response = requests.get(url)
  8.         response.raise_for_status()  # 抛出异常处理HTTP错误
  9.         return response.text
  10.     except requests.exceptions.RequestException as e:
  11.         print(f"获取上传地址失败: {e}")
  12.         return None
  13.  
  14. def upload_file(file_path, url=None, chunk_size=1024, max_size=5 * 1024 * 1024 * 1024):
  15.     """
  16.    上传文件
  17.  
  18.    Args:
  19.        file_path: 文件路径
  20.        url: 上传地址
  21.        chunk_size: 每次上传的块大小
  22.        max_size: 最大上传文件大小 (字节)
  23.    """
  24.  
  25.     if not url:
  26.         url = get_url()
  27.     if not url:
  28.         return
  29.  
  30.     try:
  31.         file_size = os.path.getsize(file_path)
  32.         if file_size > max_size:
  33.             raise ValueError(f"文件过大,最大允许上传 {max_size} 字节")
  34.  
  35.         with open(file_path, 'rb') as f:
  36.             response = requests.put(url, data=f, headers={
  37.                 'Content-Type': mimetypes.guess_type(file_path)[0]
  38.             }, stream=True)
  39.             for chunk in response.iter_content(chunk_size):
  40.                 if chunk:
  41.                     # 你可以在这里添加自定义的进度显示逻辑
  42.                     # 例如,每上传一定数量的字节,打印一次进度信息
  43.                     # print(f"已上传 {len(chunk)} 字节")
  44.  
  45.             response.raise_for_status()  # 抛出异常处理HTTP错误
  46.             print(f"上传成功: {url}")
  47.     except (IOError, OSError) as e:
  48.         print(f"文件操作失败: {e}")
  49.     except requests.exceptions.RequestException as e:
  50.         print(f"上传失败: {e}")
  51.     except ValueError as e:
  52.         print(e)
  53.  
  54. if __name__ == '__main__':
  55.     import sys
  56.     if len(sys.argv) < 2:
  57.         print("请提供要上传的文件路径作为参数")
  58.         sys.exit(1)
  59.     file_path = sys.argv[1]
  60.     upload_file(file_path)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement