Я пытаюсь загрузить файл csv со страницы и отправить его на бэкэнд, сделанный из python и flask, все работает нормально, зная, что, поскольку бэкэнд возвращает:
127.0.0.1 - - [15/Apr/2018 15:37:07] "GET /medal HTTP/1.1" 200
но ничего в ПОЧТЕ. Пробовал почти все, но без подключений или сообщений.
ОБРАТНАЯ СВЯЗЬ:
import pandas
from calest import calest_app, client
from flask import request, jsonify
from..models.Medals import Medal
db = client.estadisticas
collection = db.medallas
@calest_app.route('/result', methods = ["POST"])
def post_discipline():
csv_received = request.files['file']
csv_file = pandas.read_csv(csv_received)
discipline_result = Medal(csv_file).get_medals_discipline()
gender_result = Medal(csv_file).get_medals_gender()
city_result = Medal(csv_file).get_medals_city()
country_result = Medal(csv_file).get_medals_country()
medals_result = Medal(csv_file).get_medals_by_medals()
sport_result = Medal(csv_file).get_medals_by_sport()
cursor = collection.insert({
"discipline": discipline_result,
"gender": gender_result,
"city": city_result,
"country": country_result,
"medal": medals_result,
"sport": sport_result
})
return jsonify("Added"), 201
ФРОНТЕНД AJAX:
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js" > </script>
< script >
$("#form").on("submit", function (e) {
var fileSelect = $("#csvFile");
var files = fileSelect[0].files;
// Create a new FormData object.
var formData = new FormData();
debugger;
formData.append("#csvFile", files[0].name, files[0], files[0].name);
<!--csv_received = request.-- >
$.ajax({
url: "http://localhost:5000/result",
method: "POST",
data: formData,
contentType: false, // The content type used when sending data to the server.
cache: false, // To unable request pages to be cached
processData: false, // To send DOMDocument or non processed data file it is set to false
success: function (data) {
debugger;
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
debugger;
}
})
});
</script>
Нет, я не получаю ничего в бэкэнд-консоли, как это происходит со всеми GET, просто не хочет работать с POST,
Я имел в виду консоль браузера. Вы можете ввести его на любой веб-странице, щелкнув правой кнопкой мыши практически в любом месте и выбрав «Проверить» (элемент), а затем перейти на вкладку консоли.






formData.append принимает не более 3 параметров, вы передаете 4.
.
Первый параметр - это имя поля (а не селектор идентификаторов, как у вас) .
Во-вторых, это данные File / Blob / string (где вы указываете имя файла).
Третье поле - это имя файла, которое действительно необходимо только при передаче Blob.
Поскольку вы используете file в качестве имени поля в коде сервера, используйте его в качестве первого параметра.
formData.append("file", files[0]);
Также следует упомянуть, что вам нужно предотвратить действие формы по умолчанию, если вы используете Ajax. Поэтому вам нужно поместить e.preventDefault(); в начало вашей функции обработчика отправки.
Консоль браузера дает какие-либо подсказки или ошибки? Я почти уверен, что проблема в js, потому что вы вообще ничего не получаете на стороне сервера.