2015-10-15 1132 views
3

可能是我正在通过使用MultipartFile上传功能执行此操作。从MultipartFile中读取已从浏览器上传的csv的数据

我必须从客户端通过浏览器选择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> 

该控制器具有

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

感谢。

+0

您是否收到错误?或者你是否正在尝试使用正在查找File对象的类来处理MultipartFile?您需要提供更多关于您正在尝试执行的操作或您看到的结果的信息。 –

回答

6

我想出了一个解决方法。我将文件转换为字节,然后将字节转换为字符串。从字符串我应用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(","); 
5

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

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());  
    }