Генерация идентификатора сессии для хранения файлов, загруженных с использованием flask - PullRequest
0 голосов
/ 19 марта 2020

Я новичок в использовании микро-фреймворка flask. В настоящее время я создаю веб-страницу для загрузки документов. Загруженные документы в настоящее время хранятся в моем локальном пути файлового менеджера. Я sh для генерации идентификатора сеанса для каждой отдельной загрузки документов, и документы хранятся в виде папки по заданному пути с некоторым сеансом / уникальным идентификатором. Я сохраняю список нескольких отправленных файлов, а затем после отправки показываю список обновленных файлов.

мой файл деплимента выглядит следующим образом:

import os

from flask import Flask, render_template, request, redirect, url_for, send_from_directory
from werkzeug.utils import secure_filename


app = Flask(__name__,template_folder=r'C:\Users\Pawan\Desktop\Flask\env\Scripts\Template')

app.config['UPLOAD_FOLDER'] = r'Source Directory'

app.config['ALLOWED_EXTENSIONS'] = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])


def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1] in app.config['ALLOWED_EXTENSIONS']


@app.route('/')
def index():
    return render_template('template.html')



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

    uploaded_files = request.files.getlist("file[]")
    filenames = []
    for file in uploaded_files:

        if file and allowed_file(file.filename):

            filename = secure_filename(file.filename)

            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))

            filenames.append(filename)

    return render_template('template2.html', filenames=filenames)


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

if __name__ == '__main__':
    app.run(debug=True)

Шаблон. html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>
    <div class="container">
      <div class="header">
        <h3 class="text-muted">Asking the user to upload forms  </h3>
      </div>
      <hr/>
      <div>

      <form action="upload" method="post" enctype="multipart/form-data">
        <input type="file" multiple="" name="file[]" class="span3" /><br />
        <input type="submit" value="Upload"  class="span2">
      </form>
      </div>
    </div>
  </body>
</html>

Template2. html: Мне все еще нужно добавить опцию для удаления файлов

<!DOCTYPE html>
<html lang="en">
  <head>
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>
    <div class="container">
      <div class="header">
        <h3 class="text-muted">Successfully uploaded the documents</h3>
      </div>
      <hr/>
      <div>
      This is a list of the files you just uploaded, click on them to load/download them
      <ul>
        {% for file in filenames %}
          <li><a href="{{url_for('uploaded_file', filename=file)}}">{{file}}</a></li>
        {% endfor %}
      </ul>
      </div>
      <div class="header">

      </div>
      <hr/>    

      </div>
    </div>
  </body>
</html>

Буду признателен за любые конструктивные предложения. Заранее спасибо !!

...