Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Oracle数据库中使用JSP和Servlet上传图像_Java_Image_Oracle_Servlets_Blob - Fatal编程技术网

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

Java 在Oracle数据库中使用JSP和Servlet上传图像,java,image,oracle,servlets,blob,Java,Image,Oracle,Servlets,Blob,正如我在标题中提到的,我想将图像上传到数据库字段中。所以,不管我对我的编码部分做了什么。我在这里分享。我不认为我的代码会有任何问题,因为我在屏幕上得到了正确的输出。但问题是,当我打开数据库时,它显示了一些不同的输出。我不知道,当我试图从PIC执行select*时,数据库中出现了什么问题。然后,PIC列显示一些意外的结果。不知道,我的图像是否插入到表中 谢谢 index.jsp <html> <head> <title>Upload<

正如我在标题中提到的,我想将图像上传到数据库字段中。所以,不管我对我的编码部分做了什么。我在这里分享。我不认为我的代码会有任何问题,因为我在屏幕上得到了正确的输出。但问题是,当我打开数据库时,它显示了一些不同的输出。我不知道,当我试图从PIC执行
select*时,数据库中出现了什么问题。然后,
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>
页面正在成功运行,没有任何异常。我们将不胜感激


最后,我找到了解决办法。谢谢大家。我遵循了网站中提到的步骤,链接,我正在共享相同的链接。因此,其他人将从中受益


由于,图像被插入到
blob
类型中,该类型为
二进制大对象
,无法在该
sql*plus上显示。这就是为什么要显示
[datatype]

最后,我找到了解决方案。谢谢大家。我遵循了网站中提到的步骤,链接,我正在共享相同的链接。因此,其他人将从中受益


由于,图像被插入到
blob
类型中,该类型为
二进制大对象
,无法在该
sql*plus上显示。这就是为什么要显示
[datatype]

您可以在mysql中使用数据类型Midblob或blob。存储图像。
midbolb数据类型存储的大小比blob大

U可以在mysql中使用数据类型Midblob或blob。存储图像。
midbolb数据类型存储的大小比blob大

至少,有人告诉我,如何将图像存储到oracle 10g xe中。我被卡住了。。。请帮帮我。!!很紧急,你怎么知道数据不在里面?显然,表中有行(或者屏幕截图应该向我们显示什么?)。Java代码在我看来很好,唯一的例外是您缺少对
commit()
a\u horse\u的调用,正如您可以看到的列PIC一样,它显示[datatype],并且当我试图检索图像时。然后,它显示为空。我不知道这是什么样的接口或工具。你能用普通SQL(例如SQL*Plus)检查列是否真的为空吗?是的,我检查过了。当我执行select查询时。它返回上述结果。至少,有人告诉我,如何将图像存储到oracle 10g xe中。我被卡住了。。。请帮帮我。!!很紧急,你怎么知道数据不在里面?显然,表中有行(或者屏幕截图应该向我们显示什么?)。Java代码在我看来很好,唯一的例外是您缺少对
commit()
a\u horse\u的调用,正如您可以看到的列PIC一样,它显示[datatype],并且当我试图检索图像时。然后,它显示为空。我不知道这是什么样的接口或工具。你能用普通SQL(例如SQL*Plus)检查列是否真的为空吗?是的,我检查过了。当我执行select查询时。它返回上述结果。我已经上传了。
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());
            }
        }
    }
}