我目前正在将所有静态文件移动到 S3,并允许将一些图像上传到我的站点。总的来说,这进展非常顺利。我毫不费力地将所有现有的 css 和 js 文件都升级到了 S3,但是我在上传图像并将它们保存到 S3 时遇到了一些麻烦。
具体来说,这就是我在视图中处理文件上传的方式:
image_file = request.files["imageurl"]
if image_file and allowed_file(image_file.filename):
fn = "products/%s" % secure_filename(image_title + "." + image_file.filename.split(".")[-1])
image_file.save(url_for('static', filename=fn))
else:
response = app.make_response(render_template(
'admin/newImage.html',
title=title,
error="That Image file is invalid.")
)
return response
这一切都包含在 POST 请求处理程序中。这里的问题是url_for('static')
无法链接到正确的路径,所以我IOError
每次尝试保存这样的图像时都会得到一个。
通常我会假设我只是对我的目录结构做了一些愚蠢的事情,但同样的模式对url_for
我的静态目录中的文件非常有效。关于如何解决这个问题的任何想法?这是我的目录结构(修剪下来以供查看)
├── SpoolEngine
│ ├── admin.py
│ ├── __init__.py
│ ├── templates
│ │ ├── admin
│ │ │ ├── base.html
│ │ ├── base.html
│ │ ├── _forms.html
│ │ ├── posts
│ │ │ ├── complete.html
│ │ └── super_user
│ │ ├── base.html
│ ├── users.py
│ └── views.py
└── static
├── css
│ ├── admin.css
│ └── zebraTable.css
├── img
│ └── subtle_grunge.png
├── js
│ ├── compatibility.js
│ ├── list.js
│ ├── login.js
│ └── profiler.js
└── products
作为参考,url_for 在任何想法中完美地工作/static/css
并链接到错误的 url ?admin.py