Загрузка изображения с использованием JSP и сервлета в базу данных Oracle - PullRequest
1 голос
/ 15 января 2012

Как я уже упоминал в своем заголовке, я хочу загрузить изображение в поле базы данных.Итак, что бы я ни делал с моей частью кодирования.Я делюсь здесьЯ не думаю, что с моим кодом возникнут какие-либо проблемы, так как я получаю правильный вывод на экран.Но проблема в том, что когда я открыл базу данных, она показала несколько другой результат.Я не знаю, что не так в базе данных, когда я пытаюсь выполнить 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>

Это моя страница сервлета:

upload.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

Ответы [ 2 ]

4 голосов
/ 16 января 2012

Наконец-то я нашел решение. Спасибо всем. Я следовал за шагами, которые упомянуты на сайте, по ссылке, и я делюсь теми же ссылками. Так что другие получат пользу от этого.

Загрузка фотографий в колонку Oracle BLOB из сервлета Java и перечисление фотографий

Так как изображение вставляется в blob тип, который binary large object, который не может отображаться на этом sql*plus. Вот почему показывал [datatype].

1 голос
/ 22 декабря 2015

U может использовать тип данных Midblob или blob в mysql.хранить изображение.Тип данных midbolb хранит большие размеры, чем BLOB-объекты ..

...