linux 服务器利用阿里网盘API实现文件的上传和下载

07-19 1274阅读

文章目录

  • 背景
  • 脚本
      • 初始化
      • 阿里云盘API工具 aligo
        • 安装aligo
        • aligo教程
        • 实战
        • parse.py
        • 演示
          • 上传文件
          • 上传文件夹
          • 下载文件
          • 下载文件夹

            背景

            最近在用ubuntu系统做实验,而ubuntu 系统的文件上传和下载操作很麻烦;

            于是便打算使用阿里网盘的API 进行文件下载与上传;

            其实更主要的是想 备份本地文件到网盘和从网盘下载文件;

            脚本

            初始化

            阿里云盘API工具 aligo

            点击查看Aligo github

            方便在linux服务器上使用,只需要填入一个刷新的token就可以了。

            安装aligo

            pip install aligo
            

            aligo教程

            请读者自行浏览

            • wiki
            • 案例

              实战

              chrome抓包 获得refresh_token

              linux 服务器利用阿里网盘API实现文件的上传和下载

              import aligo
              from aligo import Aligo
              refresh_token = "抓包拿到的refresh_token"
              ali = Aligo(refresh_token=refresh_token)
              

              查看你的用户信息,就知道是否登录成功了

              print(ali.get_user())
              

              parse.py

              import argparse
              import aligo
              from aligo import Aligo
              ali = Aligo()
              def down_file_or_folder(remote_path, local_folder, is_file=False):
                  file = (
                      ali.get_file_by_path(remote_path)
                      if is_file
                      else ali.get_folder_by_path(remote_path)
                  )
                  if is_file:
                      ali.download_file(file_id=file.file_id, local_folder=local_folder)
                  else:
                      ali.download_folder(folder_file_id=file.file_id, local_folder=local_folder)
              def upload_file_or_folder(local_file_folder, remote_folder, is_file=False):
                  remote_folder_id = ali.get_folder_by_path(remote_folder).file_id
                  if is_file:
                      ali.upload_file(file_path=local_file_folder, parent_file_id=remote_folder_id)
                  else:
                      ali.upload_folder(
                          folder_path=local_file_folder, parent_file_id=remote_folder_id
                      )
              def main():
                  parser = argparse.ArgumentParser(
                      description="Download file or folder from Aliyun Drive. 默认下载 & 文件夹"
                  )
                  parser.add_argument("-up", "--is_up", action="store_true", help="默认是下载模式")
                  parser.add_argument(
                      "-f", "--is_file", action="store_true", help="默认是上传和下载文件夹"
                  )
                  parser.add_argument(
                      "-r",
                      "--remote",
                      action="store",
                      required=True,
                      metavar="REMOTE_FOLDER_PATH",
                      help="specify the remote file or folder path to download or upload.",
                  )
                  parser.add_argument(
                      "-l",
                      "--local",
                      action="store",
                      required=True,
                      metavar="LOCAL_FOLDER_PATH",
                      help="specify the local file or folder path to download or upload.",
                  )
                  args = parser.parse_args()
                  print(args.__dict__)
                  is_upload, is_file, remote, local = (
                      args.is_up,
                      args.is_file,
                      args.remote,
                      args.local,
                  )
                  # 上传
                  if is_upload:
                      print("上传...")
                      upload_file_or_folder(
                          local_file_folder=local, remote_folder=remote, is_file=is_file
                      )
                  else:
                      print("下载...")
                      down_file_or_folder(remote_path=remote, local_folder=local, is_file=is_file)
              main()
              
              Download file or folder from Aliyun Drive. 默认下载 & 文件夹
              options:
                -h, --help            show this help message and exit
                -up, --is_up          不填是下载,填是上传
                -f, --is_file         不填默认是上传和下载文件夹,填了上传和下载文件
                -r REMOTE_FOLDER_PATH, --remote REMOTE_FOLDER_PATH
                                      specify the remote file or folder path to download or
                                      upload.
                -l LOCAL_FOLDER_PATH, --local LOCAL_FOLDER_PATH
                                      specify the local file or folder path to download or
                                      upload.
              

              演示

              在upload_test文件夹下,有up.txt文件;

              linux 服务器利用阿里网盘API实现文件的上传和下载

              在阿里云盘,创建 tmp 文件夹,再在其下创建 parse文件夹

              linux 服务器利用阿里网盘API实现文件的上传和下载

              上传文件

              python parse.py -f -up -r tmp/parse -l upload_test/up.txt
              

              上述脚本实现将 本地 upload_test/up.txt 上传到阿里网盘的 tmp/parse 文件夹下;

              如下图所示,文件上传成功:

              linux 服务器利用阿里网盘API实现文件的上传和下载

              上传文件夹

              python parse.py -up -r tmp/parse -l upload_test
              

              上述脚本实现,将 本地 upload_test 文件夹上传到阿里网盘的 tmp/parse 文件夹下;

              如下图所示,文件夹上传成功:

              linux 服务器利用阿里网盘API实现文件的上传和下载

              下载文件

              python parse.py -f -r tmp/parse/up.txt -l down_test
              

              上述脚本实现,将 阿里网盘的 tmp/parse/up.txt文件下载到本地 down_test 文件下;

              如下图所示,up.txt 文件下载成功:

              linux 服务器利用阿里网盘API实现文件的上传和下载

              下载文件夹

              python parse.py -r tmp/parse/upload_test -l down_test
              

              linux 服务器利用阿里网盘API实现文件的上传和下载

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]