繁体   English   中英

使用flask将csv文件保存在postgres数据库中

[英]save csv file in postgres database using flask

我想使用flask将我的csv文件保存在数据库中。 在前端,我编写了一个函数,将csv文件发送到后端。 这是代码:

    saveCsvFile = () => { 
         console.log('saveCsvFile ...', this.state.csvFile);
         axios.post( this.state.apiUrl+'/api/v1/SalesLead/saveCsv', {
            'csv_file':this.state.csvFile,
                },  {}  )

               };

  <form>
   <input onChange={this.fileHandler} type="file" accept=".csv,text/csv" />
   <button onClick={() => this.saveCsvFile()} type="submit" form="form1" value="Submit">Submit</button>
   </form>

我写了一个简单的函数来读取python(flask)中的csv文件。 这是代码:

@SalesLeadController.route('/saveCsv', methods=['POST'])

def upload_csv():

    print('upload_csv')

    if request.method == 'POST':

        csv_file = request.files['file']

        csv_reader = csv.reader(csv_file, delimiter=',')

        for row in csv_reader:

            user = SalesLead(username=row[0], email=row[1])

            db.session.add(user)

            db.session.commit()

        return Response(json.dumps({'status': 'success', 'message': 'data successfully saved.'}), status=200, mimetype='application/json')

但上传CSV文件后出现此错误:

400 Bad Request: KeyError: 'file'

我该如何解决这个错误?

<form>
<input onChange={this.fileHandler} type="file" accept=".csv,text/csv" name = "file" />
</form>

既然在做

csv_file = request.files['file']

这里的字符串'file'是键,其中的值是实际上传的文件。 键是在HTML的输入标签中指定的名称

我认为您忘了在表单上添加属性: enctype="multipart/form-data"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM