【问题标题】:How to store an Excel file using Flask REST API如何使用 Flask REST API 存储 Excel 文件
【发布时间】:2020-02-09 16:30:15
【问题描述】:

我一直在尝试实现一个简单的 Flask REST API,它可以接受 Excel 文件并将其存储到目录中。

下面是我正在使用的sn-p

from flask import Flask, jsonify
from flask import abort
from flask import make_response
from flask import request
from werkzeug.utils import secure_filename
import os

app = Flask(__name__)

@app.route('/tasks/add', methods=['POST'])
def add_xlsx():
    file = request.files['ciq_file']
    if not file:
        return  jsonify({'error' : 'File is empty!'})

    fl_secure = secure_filename(file.filename)
    file.save('/data/prabir/t/testnew.xlsx', fl_secure)
    return jsonify({'status' : 'success'})

但是,当我尝试调用此服务时,它正在抛出 TypeError: an integer is required

(venv) [xyx@xyz t]$ curl -F 'ciq_file=@/data/prabir/somefile.xlsx' http://localhost:5000/tasks/add

Curl 命令失败并出现以下错误:

File "/data/prabir/t/app.py", line 35, in add_xlsx
    file.save('/data/prabir/t/testnew.xlsx', fl_secure)
  File "/data/prabir/venv/lib/python2.7/site-packages/werkzeug/datastructures.py", line 2803, in save
    copyfileobj(self.stream, dst, buffer_size)
  File "/data/TRpython/lib/python2.7/shutil.py", line 63, in copyfileobj
    buf = fsrc.read(length)
  File "/data/TRpython/lib/python2.7/tempfile.py", line 605, in read
    return self._file.read(*args)
TypeError: an integer is required

我无法弄清楚我正在做的潜在错误是什么。任何帮助将不胜感激。

【问题讨论】:

    标签: python python-2.7 flask flask-restful


    【解决方案1】:

    .save 方法最多需要 2 个参数:dstbuffer_size

    • dst 是指示文件路径的字符串或要写入的文件对象。
    • buffer_size 是一个整数,指定写入文件时要使用的缓冲区大小。

    现在您正在传递两个字符串:'/data/prabir/t/testnew.xlsx'fl_secure

    你可能想这样做:

    file.save('/data/prabir/t/' + fl_secure)
    

    这会将文件保存到带有原始上传文件名的路径/data/prabir/t/

    【讨论】:

    • 谢谢詹姆斯!我真的觉得自己很傻。我已经完成了保存,但我没有想到 :)
    猜你喜欢
    • 1970-01-01
    • 2021-07-01
    • 2015-02-16
    • 2021-11-06
    • 2022-08-18
    • 2016-10-04
    • 1970-01-01
    • 2021-05-22
    • 2017-10-23
    相关资源
    最近更新 更多