По сути, у меня есть форма, где пользователь будет загружать файл CSV.
<form action="/upload" method="POST" enctype="multipart/form-data">
<div class="custom-file">
<input type="file" class="custom-file-input" id="customFile" name="file" required>
<label class="custom-file-label" for="customFile">Choose file</label>
</div>
<input type="submit" class="btn btn-primary btn-block">
</form>
К вашему сведению: я использую get bootstrap .com в качестве таблицы стилей.
Теперь форма отправляет запрос POST на /upload
, где мой node.js код есть. Мне нужно, чтобы сервер проанализировал этот файл CSV и извлек данные. Я понятия не имею, что делать, поскольку все различные NPM пакеты, такие как Multer, используют систему, в которой файл сохраняется локально, а затем анализируется.
Редактировать: Забыл упомянуть об этом, но временно локальный хостинг CSV не вариант. Мне нужен клиент, чтобы загрузить сервер для его обработки и pu sh в БД, я не могу нигде сохранить файл локально.
Редактировать 2: Я использовал multer и опцию обработки памяти и получил следующее.
const express = require("express");
const app = express();
var bodyParser = require("body-parser");
var multer = require('multer');
var storage = multer.memoryStorage();
var upload = multer({ storage: storage });
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(express.static("public"));
app.get("/", function(req, res) {
response.sendFile(__dirname + "/views/index.html");
});
app.post("/upload", upload.single('file'), async (req, res) => {
res.send(req.file)
});
const listener = app.listen(process.env.PORT, function() {
console.log("Your app is listening on port " + listener.address().port);
});
Теперь, когда я загружаю файл, я получаю следующий ответ (вот что такое req.file).
{"fieldname":"file","originalname":"tech.csv","encoding":"7bit","mimetype":"application/octet-stream","buffer":{"type":"Buffer","data":[67,76,65,83,83,32,73,68,44,84,69,67,72,32,35,44,70,73,82,83,84,32,78,65,77,69,44,76,65,83,84,32,78,65,77,69,13,10,54,79,44,54,79,48,49,44,65,110,105,115,104,44,65,110,110,101]},"size":56}
Так что довольно ясно, что наши данные получаются
67,76,65,83,83,32,73,68,44,84,69,67,72,32,35,44,70,73,82,83,84,32,78,65,77,69,44,76,65,83,84,32,78,65,77,69,13,10,54,79,44,54,79,48,49,44,65,110,105,115,104,44,65,110,110,101
но как мне это обработать? Данные файла csv были
CLASS ID,TECH #,FIRST NAME,LAST NAME
6O,6O01,Anish,Anne
Так как же мне go из информации, предоставленной в атрибуте данных буфера, к фактическим данным?