Я хочу sh иметь одну веб-страницу с двумя загрузками (input
type = submit), которая принимает два файла csv и добавляет их содержимое. Например:
# csv1
col1,col2
1,2
3,4
# csv2
col1,col2
10,20
30,40
Ожидаемый результат:
col1,col2
11,22
33,44
Но на данный момент меня не волнует вывод; просто функциональность ввода: реализация двух полей <input type="submit">
и хранение их содержимого где-либо. Я хотел бы сделать это без необходимости сохранять это (т. Е. Используя file.save
), потому что это может привести к ошибкам, когда несколько пользователей сохраняют несколько файлов в каталоге сервера (я думаю?). Я также не могу использовать models.py
ORM, потому что разные пользователи могут использовать разные имена входных столбцов (например, c1
, c2
, et c.), А количество столбцов является переменным. Тем не менее, мы можем предположить, что два входа всегда будут иметь одинаковое измерение.
Мне удалось написать маршрут для обработки одного <input>
элемента, но я не уверен, как сделать two . Пока что у меня есть:
app.py ([источник]) (https://www.semicolonworld.com/question/59622/not-able-to-parse-a-csv-file-uploaded-using-flask)
from flask import Flask, make_response, request, render_template
import io
import csv
app = Flask(__name__)
@app.route('/')
def form():
return render_template("index.html")
@app.route('/transform', methods=["POST"])
def transform_view():
f = request.files['data_file']
if not f:
return "No file found"
stream = io.StringIO(f.stream.read().decode("UTF8"), newline=None)
csv_input = csv.reader(stream)
csv_contents = [] # this will be a list of lists
for row in csv_input:
print(row)
csv_contents.append(row)
# automatic download of output commented out
#stream.seek(0)
#result = transform(stream.read().replace("=", ","))
#response = make_response(result)
#response.headers["Content-Disposition"] = "attachment; filename=result.csv"
return redirect("/")
if __name__ == "__main__":
app.run(debug=True)
index. html
<html>
<head>
<title></title>
</head>
<body>
<h1>Upload CSV</h1>
<form action="/transform" method="post" enctype="multipart/form-data">
<input type="file" name="data_file" />
<input type="submit" />
</form>
</body>
</html>
Я пытаюсь выяснить, как написать два маршрута, по одному для каждого поля input
?