【问题标题】:Flask-Uploads always throwing 'UploadNotAllowed' error even with no constraints即使没有约束,Flask-Uploads 也总是抛出“UploadNotAllowed”错误
【发布时间】:2015-08-07 19:02:56
【问题描述】:

Flask-uploads 有一个名为UploadSet 的东西,它被描述为“单个文件集合”。我可以使用此上传集将我的文件保存到预定义的位置。我已经定义了我的设置:

app = Flask(__name__)
app.config['UPLOADS_DEFAULT_DEST'] = os.path.realpath('.') + '/uploads'
app.config['UPLOADED_PHOTOS_ALLOW'] = set(['png', 'jpg', 'jpeg'])
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024

# setup flask-uploads
photos = UploadSet('photos')
configure_uploads(app, photos)

@app.route('/doit', method=["POST"])
def doit():
    myfile = request.files['file']
    photos.save(myfile, 'subfolder_test', 'filename_test')

    return ''' blah '''

这应该保存到./uploads/photos/subfolder_test/filename_test.png

我的测试图片是:2.6MB,是一个 png 文件。当我上传这个文件时,我得到了错误:

...
File "/home/btw/flask/app.py", line 57, in doit
    photos.save(myfile, 'subfolder_test', 'filename_test')
File "/usr/local/lib/python2.7/dist-packages/flaskext/uploads.py", line 388, in save
    raise UploadNotAllowed()
UploadNotAllowed

但是它并没有明确说明什么是不允许的。我也尝试删除所有约束,但该应用程序仍然抛出此错误。为什么?

编辑

好的,所以我发现实际上并不是导致问题的约束。导致问题的是子文件夹和/或文件名:

# This works
# saves to: ./uploads/photos/filename_test.png
photos.save(myfile)

但我想保存到我的自定义位置./uploads/photos/<custom_subdir>/<custom_filename>。这样做的正确方法是什么?

【问题讨论】:

    标签: python flask image-uploading flask-uploads


    【解决方案1】:

    您还需要为您的filename_test 提供扩展名

    photos.save(myfile, 'subfolder_test', 'filename_test.png')
    

    UploadSet 检查新文件名的扩展名,如果不允许新的扩展名,则会抛出异常。

    由于您没有为新文件提供扩展名,因此它无法识别它。

    【讨论】:

      【解决方案2】:

      您可以在文件名中添加一个点,然后将附加文件的扩展名。

      photos.save(myfile, 'subfolder_test', 'filename_test' + '.')
      

      保存(存储,文件夹=无,名称=无)
      参数:
      storage – 要保存的上传文件。
      文件夹 – 上传集中要保存到的子文件夹。
      name - 保存文件的名称。如果它以点结尾,则文件的扩展名将附加到末尾。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-31
        • 1970-01-01
        • 2019-05-24
        • 2013-06-07
        • 2011-04-23
        • 1970-01-01
        • 1970-01-01
        • 2018-01-14
        相关资源
        最近更新 更多