Flask:如果有一个文件没有以表单方式上传则忽略(包含多个文件上传选项)

问题描述 投票:0回答:1

我的烧瓶中有一个多重上传表单。

  <form class="form-group" action="{{ url_for('load') }}" method="POST" enctype="multipart/form-data">
   <input id="file-picker" type="file" name="file1"><br>
   <input id="file-picker" type="file" name="file2"><br>
   <input id="file-picker" type="file" name="file3"><br>
   <input id="file-picker" type="file" name="file4"><br>
  </form>

这就是我处理其中数据的方式:

@app.route("/load", methods=['GET', 'POST'])
def load():

    if request.method == 'POST':
        file = request.files.get("file1")
        file_name = secure_filename(file.filename)
        im = Image.open(file)
        im.save(file_name)
        upload(photo=file_name)

upload()
将图像从表单上传到s3。我不想使用
request.getlist('files')
,因为这样以后检索它们会更容易。 在将上传的文件上传到 amazon s3 之前,我将其保存在静态文件夹中。如果我只想上传这 4 个文件中的 3 个,我会收到 IOError: [Errno 22]。

有什么办法可以忽略这个错误吗?即我可以设置为只上传一个/两个/三个文件,而不是每次都强制上传所有 4 个文件吗?

python forms flask file-upload http-post
1个回答
0
投票

好吧,这就是我所做的……结果非常简单。感谢您的提示@furas

@app.route("/load", methods=['GET', 'POST'])
def load():
 if request.method == 'POST':
    files = request.files.getlist("file")
    for file in files:
       file.seek(0, os.SEEK_END)

      if file.tell() == 0:
        pass
      else:
        file_name = secure_filename(file.filename)
        upload(p=file_name)
© www.soinside.com 2019 - 2024. All rights reserved.