【问题标题】:How to upload a csv to a JSP page and send the data in it to a MySQL database?如何将 csv 上传到 JSP 页面并将其中的数据发送到 MySQL 数据库?
【发布时间】:2020-05-05 12:35:40
【问题描述】:

我有一个 JSP,用户可以使用 input type="file" 上传 csv。我希望该 csv 中的内容进入数据库。我搜索了几个小时,只找到了 php 中的方法,但我在 php 方面的经验为零,因此感谢 java 中的任何帮助。

我的 JSP:

<span>Upload CSV : <input type="file"></span>

<table style="margin-left: 20px">
                            <tr>
                                <th class="table-custom">Employee Name</th>
                                <th class="table-custom">In Time</th>
                                <th class="table-custom">Out Time</th>

                            </tr>
</table>

【问题讨论】:

  • 由于您没有在问题中提供代码,因此很难给出直接答案。看看这个:tutorial,因为它很可能适用于您的案例
  • @mckszcz 我添加了我的代码。虽然我没有太多,我不知道如何让它工作

标签: java mysql jsp


【解决方案1】:

试试这个代码

document.getElementById("upload").addEventListener("change", upload, false);
var out = "";

function upload(e) {
  document.getElementById('csvForm').innerHTML = "";

  var data = null;
  var file = e.target.files[0];

  var reader = new FileReader();
  reader.readAsText(file);
  reader.onload = function(event) {
    var csvData = event.target.result;
    var parsedCSV = d3.csv.parseRows(csvData);

    parsedCSV.forEach(function(d, i) {
      if (i == 0) return true; // skip the header
      if (d.constructor === Array) {
        createForm(d);
      }
    });

  }
}

function createForm(csv) {

  out += '<input value="' + csv[0] + '" name="date" type="hidden">';
  out += '<input value="' + csv[1] + '" name="name" type="hidden">';
  out += '<input value="' + csv[2] + '" name="in-time" type="hidden">';
  out += '<input value="' + csv[3] + '" name="out-time" type="hidden">';

  document.getElementById('csvForm').innerHTML = out;
  document.getElementById('csvForm').setAttribute("formmethod", "post");
  document.getElementById('csvForm').setAttribute("formaction", "testBrain.jsp");
  out += '<br>';
}
<input id="upload" type="file">

<form id="csvForm"></form>
<input type="submit" value="submit" form="csvForm" formmethod="post" formaction="testBrain.jsp">

<script src="https://d3js.org/d3.v3.js"></script>

testBrain.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page import="java.sql.*,java.util.*"%>

<html>
<head>
    <meta http-equiv="Refresh" content="5;url=test.jsp">
</head>
</html>
<%
    String[] date=request.getParameterValues("date");
    String[] name=request.getParameterValues("name");
    String[] inTime=request.getParameterValues("in-time");
    String[] outTime=request.getParameterValues("out-time");

    try
    {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testDb", "root", "1234");
        Statement st=conn.createStatement();

        for(int x=0; x<name.length;x++) {
            int i = st.executeUpdate("insert into csv(date,name,`in`,`out`)values('" + date[x] + "','" + name[x] + "','" + inTime[x] + "','" + outTime[x] + "')");
        }
        out.println("Data is successfully inserted! Redirecting.. Please wait");

       // String redirectURL = "test.jsp";
       // response.sendRedirect(redirectURL);

    }
    catch(Exception e)
    {
        System.out.print(e);
        e.printStackTrace();
        out.println("Error");
    }
%>

我使用了这个question 并更改了一些东西以使其正常工作。 您可以在提交之前查看内容,方法是删除createForm JS中的"type = hidden"

【讨论】:

    猜你喜欢
    • 2017-11-19
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 2014-01-12
    相关资源
    最近更新 更多