Flask Загрузка нескольких файлов - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь загрузить несколько файлов, используя Flask, HTML и JS. Однако, когда я пытаюсь получить их имена в маршруте Flask, список, если он пуст.

Это маршрут flask (с именем upload):

@app.route("/upload", methods=["POST", "GET"])
def upload():
    if request.method == "POST":
        return str(request.files)

Затем в mu upload. html У меня есть следующий скрипт:

<form action="" method="POST" enctype="multipart/form-data">
        <div style="padding-left: 7%">
            <div class="file-upload">
                <input class="file-upload__input" type="file" name="files" id="files" multiple>
                <button class="file-upload__button" type="button">Choose File(s)</button>
                <span class="file-upload__label" style="color: white">No file(s) selected</span>
            </div>
            <script>
                Array.prototype.forEach.call(
                    document.querySelectorAll(".file-upload__button"),
                    function(button) {
                        const hiddenInput = button.parentElement.querySelector(
                            ".file-upload__input"
                            );
                        const label = button.parentElement.querySelector(".file-upload__label");
                        const defaultLabelText = "No file(s) selected";

            // Set default text for label
            label.textContent = defaultLabelText;
            label.title = defaultLabelText;

            button.addEventListener("click", function() {
                hiddenInput.click();
            });

            hiddenInput.addEventListener("change", function() {
                const filenameList = Array.prototype.map.call(hiddenInput.files, function(
                    file
                    ) {
                    return file.name;
                });

                label.textContent = filenameList.join(", ") || defaultLabelText;
                label.title = label.textContent;
            });
        }
        );
    </script>
<div style="padding-top: 75px; padding-left: 7%; padding-bottom: 10%">
    <input type="submit" value="Save to Cloud" name="submit" class="file-upload__button">
</div >
</form>

Когда я запускаю его и используется метод POST, я получаю следующий результат: enter image description here

How can I have access to the name of the files I uploaded please ?

This is what my interface looks like :

enter image description here and

введите описание изображения здесь

ОБНОВЛЕНИЕ:

Когда я делаю print(request.files) перед return, я получаю:

ImmutableMultiDict([('files', <FileStorage: 'test.csv' ('text/csv')>)]) 

где test.csv действительно правильное имя файла.

Пожалуйста, дайте мне знать, если у вас есть идеи о том, что я делаю неправильно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...