从MultipartFile读取数据,该数据包含从浏览器上传的csv

rom*_*rav 12 csv spring spring-mvc

可能是我正在使用MultipartFile上传功能.

我必须从csv文件中读取数据,客户将通过浏览器选择这些数据.我使用MultipartFile上传文件.该文件即将进入控制器,但现在我无法从中读取csv数据.请指导最佳方法或帮助我从MultipartFile读取csv数据.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>
Run Code Online (Sandbox Code Playgroud)

控制器有

@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public String uploadFileHandler(@RequestParam("file") MultipartFile file) {
Run Code Online (Sandbox Code Playgroud)

谢谢.

小智 20

我使用缓冲区逐行读取并从输入流的多部分获取.也许是更多的代码,但我发现有用的阅读文本文件的行.

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());       
  }
Run Code Online (Sandbox Code Playgroud)


rom*_*rav 8

我想出了一个解决方法.我将文件转换为字节,然后将字节转换为String.从String我应用string.split()来获取我想要的文件.

    @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(",");
Run Code Online (Sandbox Code Playgroud)