java - 在 Oracle 数据库中使用 JSP 和 Servlet 上传图像

标签 java image oracle servlets blob

正如我在标题中提到的,我想将图像上传到数据库字段中。所以,无论我对我的编码部分做了什么。我在这里分享。我不认为我的代码会有任何问题,因为我在屏幕上得到了正确的输出。但是,问题是,当我打开数据库时,它显示了一些不同的输出。我不知道,当我尝试执行 select * from PIC 时,数据库出了什么问题。然后,PIC 列显示一些意想不到的结果。不知道我的图片是否插入到表格中。

谢谢!!!

index.jsp

<html>
    <head>
        <title>Upload</title>
    </head>
    <body>
        <form action="upload"  enctype="multipart/form-data" method="post">
            <table width="400" align="center">
                <tr><td>UserName :</td><td><input type="file" name="userid" id="userid" /></td></tr>
                <tr><td><input type="Submit" value="Upload" style="width: 100px; height:30px;"/></td></tr>
            </table>
        </form>
    </body>

这是我的 servlet 页面:

上传.java

package fileupload;

import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.regex.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class upload extends HttpServlet {
    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        if (!isMultipart) {
            out.println("File Not Uploaded");
        } else {
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            List items = null;
            try {
                items = upload.parseRequest(request);
                out.println("items: " + items);
            } catch (FileUploadException e) {
                e.printStackTrace();
            }
            FileItem file = (FileItem) items.get(0);
            // out.print(file);
            Connection conn = null;
            String connstr = "jdbc:oracle:thin:@localhost:1521/XE";
            String uname = "epolicia";
            String password = "admin";
            String driver = "oracle.jdbc.OracleDriver";
            String sql = null;
            try {
                Class.forName(driver).newInstance();
                conn = DriverManager.getConnection(connstr, uname, password);
                // FileInputStream fs = new FileInputStream(savedFile);
                sql = "INSERT INTO pic(pic) VALUES(?)";
                PreparedStatement st = conn.prepareStatement(sql);
                // st.setInt(1,1);
                st.setBinaryStream(1, file.getInputStream(), (int) file.getSize());
                int rs = st.executeUpdate();
                if (rs > 0) {
                    out.println("Query Executed Successfully++++++++++++++");
                }
                conn.close();
            } catch (Exception e) {
                out.println(e.getMessage());
            }
        }
    }
}

页面运行成功,没有任何异常。我们将不胜感激。

screenshot of my database, after execution of above page

最佳答案

最后,我找到了解决方案。谢谢大家。我按照网站和链接中提到的步骤进行操作,并且我共享相同的链接。这样,其他人就会从中受益。

Upload photos into Oracle BLOB column from Java Servlet and listing photos

因为插入的图片是blob类型,binary large object,无法在sql*上显示加上。这就是显示 [datatype] 的原因。

关于java - 在 Oracle 数据库中使用 JSP 和 Servlet 上传图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8869874/

相关文章:

sql - 如何获取所有列,但必须在sql查询中仅按2列进行分组

java - 使用 webflux bean 验证时出现不明确的异常(WebExchangeBindException 与 ConstraintViolationException)

java - Liquibase插入BIT列,MySQL,列数据太长

java - 图像绘制比其他绘制组件晚半秒

python - 如何修复对象图像无法正确加载的问题

Java Oracle jdbc COLUMN 语句

java - Android Studio 抛出 "Exception in thread "main"javax.net.ssl.SSLException : Received fatal alert: protocol_version"

java - 在 switch 语句中调用类?

Java运行时错误

html - CSS 变换 : scale not working as wanted