如何在jsp中上传图像并将数据库存储为blob

时间:2011-07-26 05:50:31

标签: sql jsp blob

<%@page import="java.sql.*" %>
<html>
<form method="get" action="blobexcode.jsp" onsubmit="txtvalidate()">
<head>
    <style type="text/css">
    body{
        background-color:#d0e4fe;
    }
</style>    
</head>

<body>
    <table>
        <tr>
            <td>
                Customer Name&nbsp;<input type="text" name="Customername" id="customername">
            </td>
        </tr>
         <tr>
            <td>
                Customer Mob: <input type="text" onkeypress="return 
isNumberKey(event)" name="Customerphone" id="customerphone" >
            </td>
        </tr>
         <tr>
            <td>
                Upload File:&nbsp;&nbsp;<input type="file" id="f" name="f" >
            </td>
        </tr>
         <tr>
            <td>
                <input type="submit" value="SUBMIT" id="submit">
            </td>
        </tr>

     <script type="text/javascript">
        function isNumberKey(evt)
        {
            var charCode = (evt.which) ? evt.which : event.keyCode
            if (charCode > 31 && (charCode < 48 || charCode > 57))
               return false;
            else
               return true;
         }
     </script>

     <script type="text/javascript">
         function txtvalidate()
         {
            if(document.getElementById("customername").value=="" ||
               document.getElementById("customerphone").value=="")
            { 
               alert("Fill all fields");
               return false;
               document.Customername.focus();
            }
            else
               return true;
        }
    </script>

    </table>
</body>
</form>
</html>

2 个答案:

答案 0 :(得分:1)

阅读以下有关在db中存储图像的文章。此示例不使用JSP http://java-x.blogspot.com/2007/01/handling-oracle-large-objects-with-jdbc.html

了解上述文章后,您可以使用commons-file upload上传文件并检索上传文件的输入流并将其插入db。

有关文件上传的帮助,请参阅以下文章

http://commons.apache.org/fileupload/using.html

http://www.theserverside.com/news/1365153/HttpClient-and-FileUpload

答案 1 :(得分:0)

工作示例

String saveFile = "";
String contentType = request.getContentType();
if ((contentType != null)
        && (contentType.indexOf("multipart/form-data") >= 0)) {
    DataInputStream in = new DataInputStream(
            request.getInputStream());
    int formDataLength = request.getContentLength();
    byte dataBytes[] = new byte[formDataLength];
    int byteRead = 0;
    int totalBytesRead = 0;
    while (totalBytesRead < formDataLength) {
        byteRead = in.read(dataBytes, totalBytesRead,
                formDataLength);
        totalBytesRead += byteRead;
    }
    String file = new String(dataBytes);
    saveFile = file.substring(file.indexOf("filename=\"") + 10);
    saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
    saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,
            saveFile.indexOf("\""));
    int lastIndex = contentType.lastIndexOf("=");
    String boundary = contentType.substring(lastIndex + 1,
            contentType.length());
    int pos;
    pos = file.indexOf("filename=\"");
    pos = file.indexOf("\n", pos) + 1;
    pos = file.indexOf("\n", pos) + 1;
    pos = file.indexOf("\n", pos) + 1;
    int boundaryLocation = file.indexOf(boundary, pos) - 4;
    int startPos = ((file.substring(0, pos)).getBytes()).length;
    int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
    File ff = new File(saveFile);
    FileOutputStream fileOut = new FileOutputStream(ff);
    fileOut.write(dataBytes, startPos, (endPos - startPos));
    fileOut.flush();
    fileOut.close();

    ResultSet rs = null;
    PreparedStatement psmnt = null;
    FileInputStream fis;
    try {
        Connection connection = DbConnection.getConnection();
        File f = new File(saveFile);

        String idd = request.getAttribute("userid").toString();
        String insert = "UPDATE `employee` SET `Picture`=? WHERE `id`='"
                + idd + "'";

        psmnt = connection.prepareStatement(insert);
        fis = new FileInputStream(f);
        psmnt.setBinaryStream(1, (InputStream) fis,
                (int) (f.length()));
        int s = psmnt.executeUpdate();
        if (s > 0) {
            System.out.println("Uploaded successfully !");
        } else {
            System.out.println("Error!");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}