如何使用Python在两个URL之间代理文件
我正在编写一个遗留代码。我们将文件存储在AWS S3中。我需要做的是将文件从一个S3存储桶移动到另一个(我们的新应用程序使用的存储桶)。当一个人将文件上传到我们的应用程序时,会发生很多事情,所以我决定最简单的方法是模拟用户将文件上传到新的端点 现在,我如何从URL获取一个文件作为文件对象,然后将其代理到另一个端点?还有,有没有一种不用先下载文件就可以做到这一点的方法?我担心像视频这样的大文件 到目前为止,我所做的是:如何使用Python在两个URL之间代理文件,python,python-3.x,http,Python,Python 3.x,Http,我正在编写一个遗留代码。我们将文件存储在AWS S3中。我需要做的是将文件从一个S3存储桶移动到另一个(我们的新应用程序使用的存储桶)。当一个人将文件上传到我们的应用程序时,会发生很多事情,所以我决定最简单的方法是模拟用户将文件上传到新的端点 现在,我如何从URL获取一个文件作为文件对象,然后将其代理到另一个端点?还有,有没有一种不用先下载文件就可以做到这一点的方法?我担心像视频这样的大文件 到目前为止,我所做的是: url= 'https://example.s3.com/image' fil
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
无处放置文件,即使是临时文件
如何解决这个问题,还有什么更好的方法呢?如果您能够直接访问存储桶,那么使用Boto可能是您的最佳选择。这个答案是一个很好的参考 谢谢@BryceH,但我不能直接上传到S3。在上传文件之前,我们会对文件进行一些定制,所以我们真的需要通过我们的应用程序代理它们。