Проверка фляги и загрузка файла на веб-страницу - PullRequest
0 голосов
/ 04 июня 2018

Я пытался загрузить и использовать файл на своей веб-странице, но постоянно сталкивался с ошибками.Я неоднократно искал и пробовал много разных решений, но безуспешно.Любое направление будет оценено.

/ app / forms.py

class UploadForm(FlaskForm):
    cadfile = FileField('cadfile', validators=[FileRequired(), FileAllowed(['STEP','STP'], 'Step Files Only')])
    upload = SubmitField('Upload')

    def __init__(self, *args, **kwargs):
        super(UploadForm, self).__init__(*args, **kwargs)
        self.user = None

    def validate(self):
        initial_validation = super(UploadForm, self).validate()
        if not initial_validation:
            print('Fails')
            return False
        return True

Эта часть кода каждый раз завершается с ошибкой при "not initial_validation", независимо от того, нет файла, неправильный тип файла или правильныйтип файла.

/ app / rout.py

@app.route('/index', methods=['GET', 'POST'])
def index():
    form = UploadForm()
    if form.validate_on_submit():
        if 'cadfile' in request.files:
            cadfile = request.files['cadfile']
            cadfile.save('/app/tmp/' + cadfile.filename)
            print('Success')
        else:
            print('No Go')
        return redirect(url_for('details'))
    return render_template('index.html', title='Home', form=form)

И мой HTML-файл /app/templates/index.html

<html>
    <head>
        <title>Upload</title>
    </head>
    <body>
        <h1>Let's Do This</h1>
        <form method="post" enctype="multipart/form-data">
            {{ form.hidden_tag() }}
            {{ form.cadfile }}
            {{ form.upload() }}
        </form>
    </body>
</html>

Я хотел бы иметьвыводится «Нет файла», если файл не выбран, «Неверный тип файла», если файл не STP или STEP, и «Успех», когда файл успешно загружен.

1 Ответ

0 голосов
/ 07 июля 2018

Получил это работает.Вот мой окончательный код

/ app / forms.py

class UploadForm(FlaskForm):
   print('called uploadform')
   cadfile = FileField('cadfile', validators=[FileRequired()])
   upload = SubmitField('Upload')

/ app / rout.py

def index():
   form = UploadForm()
   FILE_TYPES = set(['STEP'])
   var.company_id = current_user.company_id
   if form.validate_on_submit():
       print('Validated')
       submit_name = form.cadfile.data.filename
       if '.' in submit_name and submit_name.rsplit('.', 1)[1] in FILE_TYPES:
           print('Yea Baby it is!')
           ...
           code
           ...
           return redirect(url_for('details'))
       else:
           form.cadfile.errors.append('File is not an accepted format')
   return render_template('index.html', title='Home', form=form)

/ app / templates / index.html

       <form method="post" enctype="multipart/form-data">
           {{ form.hidden_tag() }}
           <p>
               {{ form.cadfile }}
               {{ form.upload() }}<br>
               {% for error in form.cadfile.errors %}
               <span style="color: red;">[{{ error }}]</span>
               {% endfor %}
           </p>
       </form>
   </body>

Спасибо

...