jsp - 我想使用jsp将文件上传到mysql数据库

标签 jsp servlets

我想使用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/

相关文章:

java - Spring获取Session类对象

jsp - 在JSP文档(JSPX)中返回格式化的XML输出的简单方法

javascript - 从选择标签中获取所选文本并将其传递给另一个选择标签

Java HttpOnly 标志

java - 改变 List<String> 的类型

java - 如何使用 JSTL、EL 检查 JSP 页面中浏览器的用户代理?

java - Thymeleaf 或 JSP : which is better with Spring Boot?

java - 从 java servlet 下载时文件损坏

java - <url-pattern>/</url-pattern> 供过滤器使用

java - 如何向具有我未使用的特定用户名和密码的用户授予数据库访问权限?