javascript - Flask request.get.args - 缺少一个参数

标签 javascript python node.js

我正在从我的网站发送带有一些 FormData 的 POST 请求:

  var formData = new FormData();
  formData.append('file',file);
  formData.append('timestamp', window.performance.now())
  console.log(formData)
  console.log(window.performance.now())
  var xhr = new XMLHttpRequest();
  xhr.addEventListener("load", () => {
    console.log("asdf");
  });
  xhr.open("POST", "http://flaskmin.run.aws-usw02-pr.ice.predix.io/receivedoc");
  xhr.send(formData);

在哪里file是一个实际的 Excel 文件。

我正在使用 Flask 服务器处理它:

@app.route('/receivedoc', methods=['POST', 'GET', 'OPTIONS'])
@crossdomain(origin='*')
def upload_file():
    if request.method == 'POST':
        print(request.files)
        print("Timestamp" + request.args.get('timestamp'))
        if 'file' not in request.files:
            flash('No file part')
            return redirect(request.url)
        file = request.files['file']
        #Do stuff with the file

奇怪的是,服务器确实收到了文件,但没有收到时间戳。当我尝试打印它时,出现错误 TypeError: must be str, not NoneType .当我做 console.log(window.performance.now())在网站上,我确实在 Chrome 开发工具控制台上看到了时间,但它不会到达 Flask 服务器,保持 None .我错过了什么?我试过了 formData.append('timestamp', String(window.performance.now())) ,也没有帮助。

更新

所以我添加了一些日志记录,并且发生了一些奇怪的事情。我在做:

   fileUpload: function(file) {
      console.log("fileUpload function called")      
      var formData = new FormData();
      formData.append('file',file);
      formData.append('t_stamp123', 'test123')
      console.log(formData)
      console.log(formData.files)
      console.log(formData.file)
      console.log(file)
      var xhr = new XMLHttpRequest();
      xhr.open("POST", "http://localhost:7733/receivedoc");
      xhr.send(formData);
      var xhr1 = new XMLHttpRequest();

这通过以下方式调用:

  self.fileUpload(uploadComponentId.files[0])

uploadComponentId是一种 <form>元素。所以奇怪的是我的这个节目的控制台:

fileUpload function called
pacing-view.html:60 FormData {}
pacing-view.html:61 undefined
pacing-view.html:62 undefined
pacing-view.html:63 File(114688) {name: "GL_Details_03212018_094512.xls", lastModified: 1521640039000, lastModifiedDate: Wed Mar 21 2018 14:47:19 GMT+0100 (CET), webkitRelativePath: "", size: 114688, …}

然而,服务器确实获取了文件并且我可以将它写入磁盘(我现在在本地主机上运行所有内容)!!!尽管formData似乎是空的,文件通过服务器,但时间戳不是?哇。

更新 2

当我删除 formData.append('file',file); 时行,文件确实被发送到服务器,我得到一个 UnboundLocalError: local variable 'filename' referenced before assignment .所以我绝对不会在代码中的其他地方发送文件,它必须是 formData .

最佳答案

好的,原来 request 中的 FormData 可以被 request.form['timestamp'] 访问,它没有存储为参数

关于javascript - Flask request.get.args - 缺少一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50309875/

相关文章:

python - 我一直在尝试将一组值分成 4 个容器。我收到以下错误?如何解决这个问题我是Python初学者

node.js - yarn 包管理器 : install dependencies from private Bitbucket repository

javascript - 如何修复 jslint 错误 'Don' t make functions within a loop.'?

python - Django 查询,大于和小于不起作用

python - NSMenuItem + Python + 动态变量

node.js - 如何从 basicAuth (Express) 中注销

node.js - 如何将javascript中的字符串数组插入PostgreSQL

javascript - 将子级插入到 jQuery UI Accordion 的 DIV 中

javascript - 如何在 jQuery 中动态生成可折叠集?

javascript - 我可以获得对在 jQuery 插件中创建的对象的引用吗?