代码之家  ›  专栏  ›  技术社区  ›  intelis

如何用Python在两个url之间代理文件

  •  0
  • intelis  · 技术社区  · 6 年前

    我正在写一个遗留代码。我们把文件存放在 AWS S3 . 我需要做的是将文件从一个S3存储桶移动到另一个存储桶(我们的新应用程序使用的存储桶)。当一个人上传一个文件到我们的应用程序时,会发生很多事情,所以我决定最简单的方法是模拟用户将文件上传到一个新的端点。

    url= 'https://example.s3.com/image'
    file =  urllib.request.urlopen(url, context=ssl._create_unverified_context())
    
    payload = {'file': open(file, 'rb')}
    data = {'title': 'Picture title'}
    requests.post(final_url, files=payload, data=data, headers=headers, verify=False)
    

    File "/usr/lib/python3.5/urllib/request.py", line 590, in http_error_default
    worker_1   |     raise HTTPError(req.full_url, code, msg, hdrs, fp)
    worker_1   | OSError
    

    我想这是因为 urllib 没有地方放文件,即使是暂时的。

    如何解决这个问题,还有什么更好的方法?

    1 回复  |  直到 6 年前
        1
  •  1
  •   BryceH    6 年前

    如果您能够直接访问bucket,那么使用Boto可能是您的最佳选择。这个答案是一个很好的参考。 How to move files between two Amazon S3 Buckets using boto?