Я пытаюсь временно загрузить (прочитать файл, затем выбросить его. Я не хочу сохранять файл) .xlsx файл с моего фронта на сервер с помощью ajax-вызова (POST):
var data = new FormData();
data.append('file', file);
$.ajax({
url: 'http://127.0.0.1:5555/upload',
type: 'POST',
data: data,
cache: false,
processData: false,
contentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
success: function(result){
print(result)
}
});
Файл доходит до серверной части сокола. Это мой внутренний код:
import json
import falcon
import http.client
from .services import FileReader
class Upload:
def on_post(self, req, resp):
data = req.bounded_stream.read()
file = data
observations = FileReader.GetObservationCount(file)
observationJson = json.parse('{"observations": ' + observations + '}')
resp.status = falcon.HTTP_200;
resp.body = json.dumps(observationJson)
Как вы, наверное, видите, я использую статическую функцию GetObservationCount (file). Эта функция содержит следующий код:
def GetObservationCount(file):
wb = load_workbook(file)
wb = wb.active
observationCount = True
column = 'A'
row = 1
count = 0
while observationCount:
cell = column + str(row)
if not wb[cell].value:
observationCount = False
else:
count += 1
row += 1
return count - 1
Если я выполняю этот код, я получаю эту ошибку: openpyxl не поддерживает формат файла b '', (...) I 'Я хотел бы преобразовать (?) данные, отправленные с помощью вызова ajax, в файл .xslx. Но, похоже, я не могу найти способ заставить это работать.
Я попытался установить для параметра contentType Ajax-вызова значение false, но это не имеет значения. Что я могу сделать?
Заранее спасибо.