Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python在两个URL之间代理文件_Python_Python 3.x_Http - Fatal编程技术网

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

如何使用Python在两个URL之间代理文件,python,python-3.x,http,Python,Python 3.x,Http,我正在编写一个遗留代码。我们将文件存储在AWS S3中。我需要做的是将文件从一个S3存储桶移动到另一个(我们的新应用程序使用的存储桶)。当一个人将文件上传到我们的应用程序时,会发生很多事情,所以我决定最简单的方法是模拟用户将文件上传到新的端点 现在,我如何从URL获取一个文件作为文件对象,然后将其代理到另一个端点?还有,有没有一种不用先下载文件就可以做到这一点的方法?我担心像视频这样的大文件 到目前为止,我所做的是: url= 'https://example.s3.com/image' fil

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

现在,我如何从URL获取一个文件作为文件对象,然后将其代理到另一个端点?还有,有没有一种不用先下载文件就可以做到这一点的方法?我担心像视频这样的大文件

到目前为止,我所做的是:

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。在上传文件之前,我们会对文件进行一些定制,所以我们真的需要通过我们的应用程序代理它们。