POSTed Excel файл теряется - PullRequest
0 голосов
/ 09 мая 2018

У меня есть форма, которая читает файл:

    <form enctype="multipart/form-data" is="iron-form" method="post" action="http://localhost:7733/receivedoc" id="restForm" >
        <px-file-upload 
          id="uploadComponentId"
          message="Drag and drop files here, or click the button below." 
          multiple=false 
          accept=".xls,.xlsx">
        </px-file-upload>
        <button id="saveDataSetButton">
          <i class="fa-briefcase">Generate Pacing File</i>
        </button>
      </form>

Здесь компонент px-file-upload - это, по сути, просто повторная стилизация стандартного элемента HTML5 <input type=file>, и я должен иметь возможность использовать его таким же образом - свойство files px-file-upload содержит FileList массив, к которому я должен иметь возможность обращаться и обрабатывать запрос.

Я пытаюсь опубликовать файл с некоторым кодом NodeJS:

  this.$.saveDataSetButton.addEventListener('click', function() {
    console.log(uploadComponentId.files[0])
    console.log('restForm.saveDataSetButton click')
    restForm.submit();
  });

Как и ожидалось, консоль отображает прикрепляемый файл (вывод консоли Chrome для console.log(uploadComponentId.files[0])):

Файл (12233) {name: "testfile.xlsx", lastModified: 1522075602000, lastModifiedDate: Mon Mar 26 2018 16:46:42 GMT + 0200 (CEST), webkitRelativePath: "", размер: 12233,…}

Однако к моменту поступления запроса на сервер он уже пуст (см. Ниже). Я пытаюсь получить файл через сервер Flask (должен быть Flask, позже я сделаю Python для Excel):

UPLOAD_FOLDER = '/Users/user/Documents/flask_min'
ALLOWED_EXTENSIONS = set(['xls', 'xlsx'])

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

@app.route('/receivedoc', methods=['POST', 'GET'])
@crossdomain(origin='*')
def upload_file():
    if request.method == 'POST':
        print("In there")
        print(request.files)
        if 'file' not in request.files:
            flash('No file part')
            return redirect(request.url)
        file = request.files['file']
        if file.filename == '':
            flash('No selected file')
            return redirect(request.url)
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            return redirect(url_for('uploaded_file',
                                    filename=filename))
    return ('', 204)

Сервер получает запрос, но не может найти файл. Вывод консоли на сервере гласит:

Там

ImmutableMultiDict ([])

http://localhost:7733/receivedoc' [POST]>

127.0.0.1 - - [09 / May / 2018 15:15:23] "POST / receiveoc HTTP / 1.1" 302 -

127.0.0.1 - - [09 / May / 2018 15:15:23] "GET / receiveoc HTTP / 1.1" 204 -

Так что, очевидно, файловая часть не достигает сервера. Зачем? Что мне не хватает? Как я могу отправить файл?

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