Сохранить файл csv в базе данных postgres с помощью фляги

Я хочу сохранить свой CSV-файл в базе данных с помощью фляги. во внешнем интерфейсе я написал функцию для отправки файла csv в бэкэнд. вот код:

    saveCsvFile = () => { 
         console.info('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>

И я написал простую функцию для чтения файла csv в python (flask). вот код:

@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'

Как я могу решить эту ошибку?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
532
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
<form>
<input onChange = {this.fileHandler} type = "file" accept = ".csv,text/csv" name = "file" />
</form>

Поскольку вы делаете,

csv_file = request.files['file']

Здесь строка «файл» является ключом, где значением является фактически загруженный файл. Ключ — это имя, указанное во входном теге в HTML.

Это не работает. Я все еще получаю эту ошибку в консоли POST http://127.0.0.1:5000/api/v1/SalesLead/saveCsv 500 (INTERNAL SERVER ERROR)

arafat 30.06.2019 13:31

Я думаю, вы забыли добавить атрибут в форму: enctype = "multipart/form-data"

Другие вопросы по теме