我使用jspsmartupload文件上传组件上传文件,文件上传保存到oracle数据库的long raw字段,然后在网页上下载此文件,结果下载下来的文件打开后出现的是乱码。如果上传的是图片文件,则图片不能显示。请帮忙!急。若有代码,请发个给我,谢谢!my Email: [email protected]

解决方案 »

  1.   

    这是个正常显示的代码
    create table imgfile(name varchar2(50),afile long raw,type varchar2(50
    )); import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;
    import java.sql.*;public class ImageServlet extends HttpServlet {
        //Process the HTTP Get request
        public void doGet(HttpServletRequest request, HttpServletResponse 
    response)
           throws    ServletException, IOException {
    if((request.getParameter("name")==null)||(request.getParameter("name")
    .equals("")))
    {
    PrintWriter out = response.getWriter();
            response.setContentType("text/plain");
            out.println("No image found");
            return;}
    ResultSet result=null;
    byte [] bytes;
    String type;
    try 

    Class.forName("oracle.jdbc.driver.OracleDriver"); }catch(ClassNotFoundException e) {}
    try 

    Connection con=DriverManager.getConnection("jdbc:oracle:thin:@192.168.
    1.13:1521:orcl", 
                                       "scott", "tiger"); PreparedStatement stmnt = con.prepareStatement("select afile,type from
     imgfile where name = ? "); stmnt.setString(1,new String(request.getParameter("name").getBytes("IS
    O8859_1")));
    System.out.println(new String(request.getParameter("name").getBytes("I
    SO8859_1"))); 
    result=stmnt.executeQuery(); 
           if(result.next())
           {
           bytes = result.getBytes (1);//The sequence is very important he
    re!!!!!!
           type=result.getString(2);
           }
           else
           {
           PrintWriter out = response.getWriter();
            response.setContentType("text/plain");
            out.println("No image found");
            return;
           }
            response.setContentType(type);
            ServletOutputStream out = response.getOutputStream();
            out.write(bytes);
            out.close(); 
    stmnt.close(); con.close();  }catch(SQLException e) 

    System.out.println(e.getMessage()); 
    }     }}
      

  2.   

    我的处理方式:
         1、使用jspsmartupload组件得到上传文件的文件内容;
         2、将文件内容存入到数据库;
         3、下载文件时,从数据库long raw字段取出文件内容,结果下载下来的文本文件出现乱码,图片文件则不能显示。楼上的你说的只是取数据而已呢。
      

  3.   

    看来你已经存入了数据库,取出来图片不能显示先看看 bytes = result.getBytes (1)后bytes.length(就是取出来没有),再看setContentType对不对,应该是"image/jpeg","image/png"等等.都用println打出来看看.错误无非就是没取到字节流或者图象编码没对.