чтение данных из MultipartFile, который имеет csv, загруженный из браузера
может быть, я делаю это, используя функцию загрузки MultipartFile.
Я должен прочитать данные из csv-файла, который будет выбран клиентом через браузер. Я использовал MultipartFile для загрузки файла. Файл поступает на контроллер, но теперь я не могу прочитать данные csv из него. Пожалуйста, укажите лучший способ сделать это или помогите мне прочитать данные csv из MultipartFile. В JSP есть
<form method="POST" action="uploadFile" enctype="multipart/form-data">
File to upload: <input type="file" name="file"> <input
type="submit" value="Upload"> Press here to upload the
file!
</form>
контроллер
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public String uploadFileHandler(@RequestParam("file") MultipartFile file) {
спасибо.
2 ответов
я использовал буфер для чтения строки за строкой и получения из multipart inputstream. Возможно, это больше кода, но я нахожу полезным читать текстовый файл по строкам.
BufferedReader br;
List<String> result = new ArrayList<>();
try {
String line;
InputStream is = multipart.getInputStream();
br = new BufferedReader(new InputStreamReader(is));
while ((line = br.readLine()) != null) {
result.add(line);
}
} catch (IOException e) {
System.err.println(e.getMessage());
}
Я придумал обходной путь. Я преобразовал файл в байты, а затем преобразовал байты в строку. Из строки я применил строку.сплит() чтобы получить то, что я хотел из файла.
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public String uploadFileHandler(@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
String completeData = new String(bytes);
String[] rows = completeData.split("#");
String[] columns = rows[0].split(",");