从url将文件上载到Flask Python 3服务器

从url将文件上载到Flask Python 3服务器,python,server,Python,Server,我想从URL下载一些文件到我服务器的存储器中。例如,您拥有并希望保存它。我只找到了从用户计算机上下载的示例,但在我的情况下不起作用。 我使用下面的代码在本地程序中下载文件 with urllib.request.urlopen(url) as response, open(file_name, 'wb') as out_file: shutil.copyfileobj(response, out_file) 但在服务器上运行时,会产生以下错误: Traceback (most

我想从URL下载一些文件到我服务器的存储器中。例如,您拥有并希望保存它。我只找到了从用户计算机上下载的示例,但在我的情况下不起作用。 我使用下面的代码在本地程序中下载文件

with urllib.request.urlopen(url) as response, open(file_name, 'wb') as out_file:
        shutil.copyfileobj(response, out_file)
但在服务器上运行时,会产生以下错误:

Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/lib/python3.8/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/lib/python3.8/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/usr/lib/python3.8/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/lib/python3.8/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/DenShlk/mysite/flask_app.py", line 26, in hello_world
    save_pic_by_id(id)
  File "/home/DenShlk/mysite/flask_app.py", line 20, in save_pic_by_id
    with urllib.request.urlopen(pic_url) as response, open(file_name, 'wb') as out_file:
  File "/usr/lib/python3.8/urllib/request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.8/urllib/request.py", line 525, in open
    response = self._open(req, data)
  File "/usr/lib/python3.8/urllib/request.py", line 542, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
  File "/usr/lib/python3.8/urllib/request.py", line 502, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.8/urllib/request.py", line 1360, in https_open
    return self.do_open(http.client.HTTPSConnection, req,
  File "/usr/lib/python3.8/urllib/request.py", line 1320, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error Tunnel connection failed: 403 Forbidden>
回溯(最近一次呼叫最后一次):
wsgi_应用程序中的文件“/usr/lib/python3.8/site packages/flask/app.py”,第2446行
response=self.full\u dispatch\u request()
文件“/usr/lib/python3.8/site packages/flask/app.py”,第1951行,完整发送请求
rv=自身处理用户异常(e)
文件“/usr/lib/python3.8/site packages/flask/app.py”,第1820行,在handle\u user\u异常中
重放(exc_类型、exc_值、tb)
文件“/usr/lib/python3.8/site packages/flask/_compat.py”,第39行,重新登录
增值
文件“/usr/lib/python3.8/site packages/flask/app.py”,第1949行,完整发送请求
rv=自我分派请求()
文件“/usr/lib/python3.8/site packages/flask/app.py”,第1935行,在调度请求中
返回self.view_函数[rule.endpoint](**req.view_参数)
文件“/home/DenShlk/mysite/flask_app.py”,第26行,在hello_world中
通过_id(id)保存_pic_
文件“/home/DenShlk/mysite/flask\u app.py”,第20行,在save\u pic\u by\u id中
将urllib.request.urlopen(pic_url)作为响应,将(文件名,'wb')作为out_文件打开:
urlopen中的文件“/usr/lib/python3.8/urllib/request.py”,第222行
返回opener.open(url、数据、超时)
文件“/usr/lib/python3.8/urllib/request.py”,第525行,打开
响应=自身打开(请求,数据)
文件“/usr/lib/python3.8/urllib/request.py”,第542行,打开
结果=self.\u调用\u链(self.handle\u打开,协议,协议+
文件“/usr/lib/python3.8/urllib/request.py”,第502行,在调用链中
结果=func(*args)
文件“/usr/lib/python3.8/urllib/request.py”,第1360行,https\u open
返回self.do_open(http.client.HTTPSConnection,req,
文件“/usr/lib/python3.8/urllib/request.py”,第1320行,打开
引发URL错误(err)
urllib.error.urleror:

谢谢你的帮助!

最后,我发现了真正的问题。我使用了,并且有一个可以从免费帐户访问的站点的白名单