Avatar billede stargate Nybegynder
18. marts 2004 - 12:23 Der er 10 kommentarer og
1 løsning

Gemme og hente dok. i database

Hej,
jeg har flg. problemstilling.

Jeg skal gemme dokumenter (fortrinsvis *.doc) i en Oracle8i database på serveren. (de må ikke ligge i filsystemet)

Overførslen af filerne mener jeg kan gøres vha. klasser fra http://www.servlets.com/cos/index.html.

Det er håndteringen af BLOB (?) jeg ikke helt har styr på.

Desuden skal dokumenterne kunne hentes ud igen, og præsenteres for brugere...?

Håber på en hjælpende hånd  ;-)
Avatar billede arne_v Ekspert
19. marts 2004 - 18:47 #1
Prøv og check links i disse spørgsmål:

http://www.eksperten.dk/spm/418370
http://www.eksperten.dk/spm/416763

det er lidt tungt stof, men det kan godt bringes til at virke !
Avatar billede stargate Nybegynder
20. marts 2004 - 10:20 #2
Tak for dit svar, det var en god hjælp...
Jeg tror, at det hjælper mig med første del af spørgsmålet, nemlig at få gemt dok. i DB.
Har dog overvejet at gemme filer i filsystemet, da det på den måde bliver noget nemmere at præsentere dem for brugeren igen med en "<A href="xxx.doc">bla bla</A>

Ellers er jeg vel nødt til først at hente dok ud fra DB, derefter få det "streamet" ned til clienten for visning??

Denne del mangler jeg at få styr på...?
Avatar billede arne_v Ekspert
20. marts 2004 - 10:24 #3
Til at hente dem ud igen laver du bare en servlet som kaldets med:

<A HREF="/dinapp/GetDocServlet?doc=12345">Doc 12345</>

hvor den så sætter en passende MIME type, henter BLOB'en op af databasen
og returnerer den til client.

Det er ikke så svært.
Avatar billede stargate Nybegynder
20. marts 2004 - 10:30 #4
Hurtigt svar  ;-)

Og..., hvad nu hvis der ligger en "politisk" beslutning om ikke at bruge servlet's?

Kan det så bare laves som en java-metode i JSP ???
Avatar billede arne_v Ekspert
20. marts 2004 - 10:34 #5
Jeg mener kun at JSP sider kan returnere text data ikke binære data.

At returnere binnære data er en af de ting som man stadig bruger servlets til.
Avatar billede stargate Nybegynder
20. marts 2004 - 10:37 #6
OK, så må jeg prøve at få det igennem...

Jeg har dog ikke arbejdet med servlets, så har du evt. et eksempel på dit ovenst. forslag ?

Evt. bare pseudokode ?
Avatar billede arne_v Ekspert
20. marts 2004 - 10:40 #7
Standard servlet skelet med 10 linier koden indeni burde kunne gøre det.

Hvis du kører fast så skriv, så laver jeg et lille eksempel.
Avatar billede stargate Nybegynder
20. marts 2004 - 10:46 #8
OK, jeg smiler  ;-)

da jeg end ikke ved hvad et "standard servlet skelet" er...

Men, jeg har da bogen "JAVA Servlet Programming", så det er vel bare at gå i gang med læsestoffet  ;-)

Jeg takker og lukker...
Kører jeg fast, så opretter jeg bare et nyt spørgsmål til dig  :-O
Avatar billede arne_v Ekspert
20. marts 2004 - 11:16 #9
Her er den klassiske HelloWorldServlet:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;

public class HelloWorldServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        response.setContentType("text/html");
        out.println("Hello world !");
    }
}
Avatar billede arne_v Ekspert
20. marts 2004 - 11:20 #10
Så noget a la:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;

public class GetDocumentServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletOutputStream out = response.getOutputStream();
        response.setContentType("noget/noget");
        int doc = Integer.parseInt(request.getParameter("doc"));
        byte[] b = ...
        out.write(b);
    }
}
Avatar billede stargate Nybegynder
20. marts 2004 - 11:27 #11
Super...
Det er alle points'ene værd.

Tak for hjælpen
Jack.
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