Avatar billede stargate Nybegynder
22. marts 2004 - 15:47 Der er 7 kommentarer og
1 løsning

Gemme og hente dok. i database (Igen, igen arne_v )

Hej,
Jeg har prøvet at gøre som arne_v foreslog, men det virker ikke.

Min kode:
    private byte[] getDok(String id, String name) {
        byte[] res = "Nothing Found".getBytes();
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            java.sql.Connection connection = null;
            java.sql.Statement statement = null;
       
            connection = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@bifrost:1563:DEPM1", user, pw);
            statement = connection.createStatement();
            java.sql.ResultSet result = null;
          java.sql.Blob blob;
   
            String cmd = "SELECT * FROM "+attTabel;
            //String cmd = "SELECT * FROM "+attTabel+" WHERE AFTALEID='"+id+"' AND ATT_FIL='"+name+"'";
            result = statement.executeQuery(cmd);
            if(result.next()) {
                contentType = result.getString("CONTENT_TYPE");
                blob = result.getBlob("FIL_BLOB");
                byte[] blob_res = blob.getBytes((long)1,(int)blob.length());
                return blob_res;
            }
        } catch (Exception e) {
            res = ("EXCEPTION"+e).getBytes();
        }
        return res;
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletOutputStream out = response.getOutputStream();
        aftaleid = request.getParameter("aftaleid");
        name = request.getParameter("name");
        byte[] b = getDok(aftaleid, name);
        response.setContentType("application/msword");
        //response.setContentType(contentType);
        if (b != null) {
            out.write(b);
      }
    }

Men jeg får bare "Snavs" ud på skærmen...:
ÐÏࡱá>þÿ <>þÿÿÿ;ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì¥ÁU@ð¿Ü bjbj¬›¬›%,ÎñÎñÜÿÿÿÿÿÿˆPPPPPPPdh h h h t tde¶ô ô ô ô ô ô ô ô äææææææ$Rm Pô ô ô ô ô PPô ô hhhô ÖPô Pô ähô ähØh@PP@ô è Ð2öÏá Äh Ê @`„50e@ýÔ”ý@ddPPPPýP@ ô ô hô ô ô ô ô  dd h hddh 
Avatar billede arne_v Ekspert
22. marts 2004 - 15:55 #1
Det ligner faktisk starten af et word dokument.

Men tilsyneladende er browseren ikke klar over at det er word.

Det første du skal gøre er at prøve at save link fremfor at vise det
og se om den gemte fil er OK.

Ja => HTTP header & browser problem

Nej => gem og hent i database problem
Avatar billede stargate Nybegynder
22. marts 2004 - 16:45 #2
Ja, det er starten af et Word dokument...
Jeg tog ikke det hele med  ;-)

Når jeg uploader dokumentet, og gemmer det i DB, har jeg prøvet at skrive størrelsen ud. Det samme har jeg prøvet efter at have hentet det ud fra DB, og de er ens...!

Den "contentType" jeg sætter, er den jeg har fået fra upload-delen.

Browser er IE6

Samme resultat får jeg ved Excel dokumenter.

Jeg må sige, at jeg bare er kørt fast...!
Avatar billede stargate Nybegynder
22. marts 2004 - 16:48 #3
P.S.
Jeg kan da lige sige, at jeg også har prøvet med Oracle's BLOB, og getBLOB() fra OracleResultSet, men det virker slet ikke. Der får jeg bare returneret et "tomt" bytearray...
Avatar billede stargate Nybegynder
22. marts 2004 - 17:16 #4
P.P.S.
Jeg har i TOAD prøvet at gemme indholdet af Blob-feltet til en fil, f.eks. xxx.doc, og det virker fint.
Avatar billede arne_v Ekspert
22. marts 2004 - 22:58 #5
Prøv evt. at kalde response.setContentType førend response.getOutputStream ...
Avatar billede simonvalter Praktikant
23. marts 2004 - 00:56 #6
hvis du skal downloade den skal du nok have fat i noget ligende dette
  response.setHeader("Content-disposition",
                          "attachment;filename=" + sn.getName() + "" +
                          request.getParameter("id") + ".java");
Avatar billede stargate Nybegynder
23. marts 2004 - 08:55 #7
Tjaaaa, nu virker det faktisk...???
Jeg startede dagen med at sende en link til en anden, for at se om resultatet var det samme, men det virkede...
Så prøvede jeg selv, og det virkede sørme også ???
Min maskine skulle åbenbart bare genstartes, suk...!

arne_v --> Vil du have lidt point for besværet ?
Avatar billede arne_v Ekspert
23. marts 2004 - 08:58 #8
jo tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester