我是编程新手。我正在尝试将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?
答案 0 :(得分:0)
如果我正确理解了这个问题,应该这样做:
conn = DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Excel Driver(*.xls)};DBQ=**" + fileName1 + "**; readOnly= false");
修改强> 从您的评论中,我意识到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");