我想使用jsp将文件上传到mysql数据库。当我使用输入类型="file"时,jsp不返回完整路径。我需要完整路径来上传 mysql 数据库中的文件。
<form id="translationFormID" method="post" action="saveTranslation">
<input type="file" name="attachCV" id="attachCVID" value="Attach CV">
<input type="submit" name="submit" />
</form>
这是我的jsp页面。我使用 post 方法调用 servlet 'saveTranslation'。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String attachCV=null;
try{
String attachCV=request.getParameter("attachCV");
System.out.println("path= "+attachCV);
}
catch(Exception){
e.printStackTrace();
}
}
这是我的 servlet 代码。这里获取并打印attachCV参数。当我打印 AttachCV 时,它显示类似“c:\fakepath\sample.docx”的内容
最佳答案
i need full path to upload a file in mysql db.
这里存在一个重大的思维错误。
想象一下,我是想要上传文件的客户端,你是需要获取文件内容的服务器。我给你我完整的本地磁盘文件系统路径c:\path\to\sample.docx
作为唯一信息,完全按照您的要求。作为服务器,您如何获取其内容?您是否有到我的本地硬盘文件系统的开放 TCP/IP 连接?真的吗?
这不是上传文件的方式。仅当服务器与客户端在物理上运行在同一台计算机上时,这才有效,因此您可以仅使用 FileInputStream
与那条路。因此,这只能在本地开发环境中工作,但绝对不适用于现实世界的生产环境,在实际生产中,服务器运行在与客户端不同的物理计算机上,并通过 HTTP 连接分隔开。
您应该对客户端随 HTTP 请求正文一起发送给您的唯一文件内容感兴趣。在 HTML 术语中,您可以使用 <input type="file">
为此,在 <form enctype="multipart/form-data">
。可以在此处找到带有完整代码示例的更详细答案:How to upload files to server using JSP/Servlet?它使用 request.getPart()
描述了现代 Servlet 3.0 方式。以及之前事实上的标准 Apache Commons FileUpload API。
一旦你以正确的方式实现了它,你最终应该得到 InputStream
代表您从 Servlet 3.0 part.getInputStream()
获取的文件内容或 Apache Commons FileUpload item.getInputStream()
。然后您可以使用 PreparedStatement#setBinaryStream()
将其存储在数据库中的常用方法和 ResultSet#getBinaryStream()
从数据库中检索它。
关于jsp - 我想使用jsp将文件上传到mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12540029/