首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取文件csv上传并添加mysql

获取文件csv上传并添加mysql
EN

Stack Overflow用户
提问于 2017-08-21 05:24:52
回答 1查看 122关注 0票数 0

我写的程序上传文件csv到服务器使用strust1。我已经上传文件到文件夹,但我无法读取文件csv的数据,当我上传。我想从csv读取数据并写入mysql,但没有成功。

文件上传:

代码语言:javascript
运行
复制
@Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception {
        StudentDAO student = new StudentDAO();
        List<Student> actorList = new ArrayList<>();
        FileUploadForm fileUploadForm = (FileUploadForm)form;

        FormFile file = fileUploadForm.getFile();

        //Get the servers upload directory real path name
        String filePath =
               getServlet().getServletContext().getRealPath("/") +"upload";

        //create the upload folder if not exists
        File folder = new File(filePath);
        if(!folder.exists()){
            folder.mkdir();
        }

        String fileName = file.getFileName();

        if(!("").equals(fileName)){

            System.out.println("Server path:" +filePath);
            File newFile = new File(filePath, fileName);

            if(!newFile.exists()){
              FileOutputStream fos = new FileOutputStream(newFile);
              fos.write(file.getFileData());
              fos.flush();
              fos.close();
              InsertData(newFile.getAbsoluteFile().toString());
            }


        }

private void InsertData(String pathFile){
    StudentDAO student = new StudentDAO();
    BufferedReader br = null;
    String path="";

    String line = "";
    String cvsSplitBy = ",";
    DB.OpenConnect();

        String query = "LOAD DATA LOCAL INFILE '" + pathFile + "' INTO TABLE student FIELDS ENCLOSED BY '\"' TERMINATED BY ';' ESCAPED BY '\"'\r\n" + 
                "LINES TERMINATED BY '\\r\\n';";
        try {
            DB.exeUpdate(query);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

但是当我运行它的时候出错了。

代码语言:javascript
运行
复制
java.sql.SQLException: Unable to open file 'E:Ebook tin hocJava.metadata.pluginsorg.eclipse.wst.server.core mp5wtpwebappsFileUploadFinalupload3.csv'for 'LOAD DATA LOCAL INFILE' command.Due to underlying IOException: 

** BEGIN NESTED EXCEPTION ** 

java.io.FileNotFoundException
MESSAGE: E:Ebook tin hocJava.metadata.pluginsorg.eclipse.wst.server.core    mp5wtpwebappsFileUploadFinalupload3.csv (The filename, directory name, or volume label syntax is incorrect)

STACKTRACE:

java.io.FileNotFoundException: E:Ebook tin hocJava.metadata.pluginsorg.eclipse.wst.server.core  mp5wtpwebappsFileUploadFinalupload3.csv (The filename, directory name, or volume label syntax is incorrect)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at com.mysql.jdbc.MysqlIO.sendFileToServer(MysqlIO.java:3421)
    at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2617)
    at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1788)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2209)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2619)
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1709)
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1628)
    at dao.DB.exeUpdate(DB.java:56)
    at action.FileUploadAction.InsertData(FileUploadAction.java:100)
    at action.FileUploadAction.execute(FileUploadAction.java:62)
    at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
    at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
    at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)


** END NESTED EXCEPTION **

上传文件的文件夹: E:\Ebooktinhoc\Java.metadata.plugins\org.eclipse.wst.server.core\tmp5\wtpwebapps\FileUploadFinal\upload*.csv.但错误: E:Ebook tin hocJava.metadata.pluginsorg.eclipse.wst.server.core mp5wtpwebappsFileUploadFinalupload3.csv。

为什么eclipse找不到正确的路径?如何读取csv数据并导入到mysql中?更新:我的问题解决。我使用sql:"String sql = "insert into student values('" + tr[0] + "', '" + tr[1] + "', '" + tr[2] + "', '"+tr[3]+ "', '"+tr[4]+"')";命令并使用以下方法:

代码语言:javascript
运行
复制
BufferedReader br = null;
 String path="";
 String cvsSplitBy = ",";
    try {
            br = new BufferedReader(new FileReader(pathFile));
            String line = br.readLine();
            while ((line = br.readLine()) != null) {                
                // use comma as separator
                String[] tr = line.split(cvsSplitBy);
                student.insertStudent(tr);
            }

这对我很管用。谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-21 15:27:08

您是否在表单HTML上使用"multipart/ form -data“标记?

我猜你推荐的网站是Struts file upload example

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45786933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档