как подключить просматриваемый файл - PullRequest
0 голосов
/ 07 февраля 2012

Я новичок в программировании. Я пытаюсь загрузить файл Excel и его содержимое в базу данных MSSQL. С помощью этого кода я могу получить окно браузера файлов. после подачи он должен выполнить в соответствии с upload.jsp.

     <input type="file" name="file" size="50" />

upload.jsp используется для получения имени просматриваемого файла и затем загрузки его содержимого в базу данных с помощью соответствующего запроса.

используя ODBC, я могу подключиться к базе данных Excel. но здесь я должен упомянуть Book1.xls. но я не могу взять имя просматриваемого файла из приведенного выше кода.

 Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); 
 conn = DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Excel 
 Driver(*.xls)};DBQ=**book1.xls**; readOnly= false");

Я использую этот код для доступа к имени просматриваемого файла

   String contentType = request.getContentType();
   out.println("<title>JSP File upload</title>");
   DiskFileItemFactory factory = new DiskFileItemFactory();
        // Create a new file upload handler
   ServletFileUpload upload = new ServletFileUpload(factory);
            // Parse the request to get file items.
    List fileItems = upload.parseRequest(request);
            // Process the uploaded file items
    Iterator m = fileItems.iterator();
    FileItem fi = (FileItem)m.next();
    String fileName1=fi.getName();
    out.println("Uploaded Filename: " + fileName1 + "<br>");

Как связать имя просматриваемого файла с ODBC. это значит

   Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); 
   conn = DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Excel 
   Driver(*.xls)};DBQ=**fileName1**; readOnly= false");

вместо book1.xls как вызвать просматриваемое имя файла fileName1?

1 Ответ

0 голосов
/ 07 февраля 2012

Если я правильно понимаю вопрос, это должно сделать это:

conn = DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Excel Driver(*.xls)};DBQ=**" + fileName1 + "**; readOnly= false");

Edit: Из ваших комментариев я понял, что драйвер ODBC ищет файл на диске, но вы не записали его на диск в своем примере. DiskFileItemFactory может записать его куда-нибудь во временный файл, но это не гарантируется, и это, конечно, не по адресу "fileName1".

Так что сначала вам нужно записать файл куда-нибудь. Вероятно, что-то вроде следующего кода. Это может работать как написано, но могут быть проблемы с путем ... Я не уверен, возвращает ли fi.getName() полный путь или просто имя. В любом случае, вам, вероятно, следует создать папку где-нибудь для этих файлов и указать полный путь к ней.

File outFile = new File(fileName1);
fi.write(outFile);
conn = DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Excel Driver(*.xls)};DBQ=**" + fileName1 + "**; readOnly= false");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...