user2786019
user2786019

Reputation: 3

flask html input format

I am trying to read a file in using python/Flask and display it at the click of a button. To view the file, a return function like this works fine:

return redirect(url_for('uploaded_file',filename=filename))

But I am trying to implement in HTML to view file at a click. Something like this:

<form><input action="redirect(url_for etc. ??)" type=submit value=viewFile> </form>

What would be the correct syntax for action?
Thanks for any hint.

Upvotes: 0

Views: 550

Answers (2)

user2786019
user2786019

Reputation: 3

This code worked for me to pass filename to html form input.

python:

...
return render_template('view.html', cat = filename)

html (view.html):

<!doctype html>
<form action="{{url_for('uploaded_file', filename=cat)}}" enctype="multipart/form-data">
<input type=submit value='view file'>
</form>

Upvotes: 0

bsa
bsa

Reputation: 2801

The action attribute should go on <form>, not <input>. The value of action should just be the URL of your route which accepts the file. Assuming you're using Jinja2, something like this:

Jinja2:

<form action="{{url_for('upload')}}" enctype="multipart/form-data">
  <input type="file" name="view_file">
  <input type="submit" value="Upload">
</form>

Python:

@app.route('/upload', methods=['POST'])
def upload():
    # Handle upload and save to disk here..
    return redirect(url_for('uploaded_file', filename=filename))

@app.route('/uploads/<filename>')
def uploaded_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'], filename)

See also http://flask.pocoo.org/docs/0.11/patterns/fileuploads/ (it looks like you are already working from that example..)

Upvotes: 1

Related Questions