чтение данных из 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(",");