Toon posts:

[Java + PDF] file renamen/rewriten

Pagina: 1
Acties:

Verwijderd

Topicstarter
hey peeps...

Ik ben bezig een web-app te maken, een combi van java/jsp/struts/xdoclet. Een van de vereiste functies is dat het mogelijk moet zijn een pdf te openen. Alleen is hier een probleem: om veiligheidsredenen mag het voor de gebruiker niet zichtbaar zijn waar de pdf is opgeslagen en wat de orginele file-name van de pdf is. En daar ligt dus het probleem.

Google geeft genoeg resultaten over hoe ik dynamisch een pdf moet maken/wijzigen enz enz. Maar dus niks over wat ik wil.

Heeft iemand een idee hoe ik dit kan gaan aanpakken?

tnx

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 20:58

Robtimus

me Robtimus no like you

Moeten ze zelf kunnen browsen voor die file? Zo nee, dan kun je toch gewoon de hele filename verbergen?

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Topicstarter
Nee, de pdf moet via een link worden geopend... maar, deze link mag dus geen verwijzing zijn naar de locatie van waar de eigelijke file staat. M.A.W. de gebruiker mag geen idee hebben waar de pdf vandaan komt..

  • Fatamorgana
  • Registratie: Augustus 2001
  • Laatst online: 07-08 04:17

Fatamorgana

Fietsen is gezond.

Kun je niet gewoon doen dat de link iets is als: getpdf.jsp?dezefile.pdf en dat de pagina getpdf.jsp dat gewoon de pdf uit de goede dir plukt en terug geeft?

[ Voor 6% gewijzigd door Fatamorgana op 16-04-2003 16:48 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Gewoon met de hand de juiste file uitlezen en die direct doorsturen naar de client

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
helaas is dat dus niet zo gewoon.. laat anders eens een stukje code zien waar je dat gewoon doet....

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
je leest je file in een servlet en je returned the pdf aldus als pure content: (ie met je mime-type), wel een beetje crue voor je server natuurlijk... fatamorgana's idee is veel beter...

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 20:58

Robtimus

me Robtimus no like you

IDD. En aangezien ze niet de filenaam mogen zien (dus ook niet in de url) kun je dan in je code een name conversie toepassen.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Topicstarter
idd, zou fatamorgana's idee veel beter zijn, helaas staat in mijn TO specifiek dat er een pdf naar de client moet....

tnx anyway..

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Uhm, Fatamorgana's idee doet intern ook wat ik voorstelde
Hoe kun je anders "een file uit een dir plukken en die doorsturen"

Daar zijn 2 opties voor: ten eerste met een location header, maar dat wil je niet omdat dan voor de gebruiker zichtbaar is waar de pdf staat, en de tweede is de manier die ik voorstelde, dus je file inlezen en direct doorsturen (zoals php's passthru () functie)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

aangezien je met jsp werkt kan het nog makkelijker. pak je web.xml erbij en mount elk bestand aan een appart url. Verberg de echte directory door een default invoker..

Verwijderd

Ik zal het je heel makkelijk maken... Ik heb het namelijk net zelf gemaakt ;-)

Hier is de code.... (Ik gebruik ook struts, dus dit is een action).

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public ActionForward execute(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response) {

        DynaActionForm myForm = (DynaActionForm) form;
        String serial = (String) myForm.get("serial");

        try {
            InputStream is =
                new BufferedInputStream(
                    new FileInputStream(filename); // dit moet je even zelf regelen.
            OutputStream os = response.getOutputStream();
            response.setContentType("application/pdf");

            byte[] buffer = new byte[1024]; /*or whatever size*/

            int read = is.read(buffer);
            while (read >= 0) {
                if (read > 0)
                    os.write(buffer, 0, read);
                read = is.read(buffer);
            }

            /* NOT NEEDED  os.flush(); */
            is.close();
            os.close();

        } catch (Exception e) {
            System.out.println(e.toString());
        }

        return null;
    }


Suc6!

[ Voor 3% gewijzigd door .oisyn op 17-04-2003 18:00 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

razor_harm: ik heb je post geedit zodat ie een [code=java]...[/code] gebruikte (voor de highlighting ;))

overigens heb je een rare manier voor indenting. Bovendien mist er een haakje-sluiten bij het aanmaken van een BufferedInputStream :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Verwijderd schreef op 17 April 2003 @ 17:16:
Ik zal het je heel makkelijk maken... Ik heb het namelijk net zelf gemaakt ;-)

Hier is de code.... (Ik gebruik ook struts, dus dit is een action).

<-- blaat -->

Suc6!
Hey, perfect, dank je wel, het werkt geweldig!
Pagina: 1