亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 servlet 上讀取 CSV 文件數據,作為表單數據發送

如何在 servlet 上讀取 CSV 文件數據,作為表單數據發送

四季花海 2023-05-10 17:10:58
我設計了一個 servlet 來讀取 CSV,并且我將 CSV 作為表單數據從郵遞員傳遞,但我無法獲得任何讀取該數據的選項。我試過下面的代碼String body = request.getReader().lines().collect(Collectors.joining());我得到了一個巨大的字符串,但我不知道如何解析這個字符串。----------------------------140780421327043896517058Content-Disposition: form-data; name="CSVfile"; filename="dummyDataSet.csv"Content-Type: text/csvID,Name ,Age,Address,State,Date,Salary1,Airi Satou,33,Tokyo,Tokyo,11/28/2008,"$162,700 "2,Angelica Ramos,47,London,London,10/9/2009,"$162,700 "3,Ashton Cox,66,San Francisco,San Francisco,1/12/2009,"$86,000 "4,Bradley Greer,41,London,London,10/13/2012,"$132,000 "5,Brenden Wagner,28,San Francisco,San Francisco,6/7/2011,"$206,850 "6,Brielle Williamson,61,New York,New York,12/2/2012,"$372,000 "7,Bruno Nash,38,London,London,5/3/2011,"$163,500 "8,Caesar Vance,21,New York,New York,12/12/2011,"$106,450 "9,Cara Stevens,46,New York,New York,12/6/2011,"$145,600 "10,Cedric Kelly,22,Edinburgh,Edinburgh,3/29/2012,"$433,060 "----------------------------140780421327043896517058--你能幫我嗎,如何讀取CSV數據。
查看完整描述

1 回答

?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

使用request.getParts()orrequest.getPart(name)讀取多部分內容并向 servlet 添加 @MultipartConfig 注釋。


干得好:


import javax.servlet.ServletException;

import javax.servlet.annotation.MultipartConfig;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.Part;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.util.stream.Collectors;


@WebServlet(urlPatterns = "/upload")

@MultipartConfig

public class MyFileUploadServelt extends HttpServlet {

    private static final String CONTENT_DISPOSITION_KEY = "content-disposition";

    private static final String FILE_NAME_KEY = "filename";

    private static final int BUFFER_SIZE = 2048;


    @Override

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        System.out.println("Content Type: " + req.getContentType());

        System.out.println("Content Length: " + req.getContentLength());

        System.out.println("Parts: " + req.getParts().toString());

        System.out.println("Part 1: " + req.getPart("myfile"));

        // Read parts. Also can be read by directly calling req.getPart(fileName)

        for (Part part : req.getParts()) {

            System.out.println("File Name: " + getFileName(part));

            System.out.println("File Content: " + getTextFromPart(part));

        }

    }


    private String getFileName(Part part) {

        for (String contentDisposition : part.getHeader(CONTENT_DISPOSITION_KEY).split(";")) {

            if (contentDisposition.trim().startsWith(FILE_NAME_KEY)) {

                return contentDisposition.substring(contentDisposition.indexOf('=') + 1).trim().replace("\"", "");

            }

        }

        return null;

    }



    private String getTextFromPart(Part part) throws IOException {

        BufferedReader reader =

                new BufferedReader(new InputStreamReader(part.getInputStream(), "UTF-8"));

        StringBuilder value = new StringBuilder();

        char[] buffer = new char[BUFFER_SIZE];

        for (int length = 0; (length = reader.read(buffer)) > 0; ) {

            value.append(buffer, 0, length);

        }

        return value.toString();

    }

}



查看完整回答
反對 回復 2023-05-10
  • 1 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號