[java-applet] Local file selecteren en uploaden.

Pagina: 1
Acties:

  • evaarties
  • Registratie: April 2001
  • Laatst online: 09-09 13:46

evaarties

Powerball @ 12.582

Topicstarter
Ik ben ben bezig om een applet te schrijven waarmee een gebruiker een file (.jpg plaatje) mee moet kunnen selecteren.

Deze file wil ik dan uploaden naar een server.

Nu heb ik een beetje de search bekeken en blijkt dat java applets geen toegang krijgen tot locale files.

Wel heb ik iets gevonden van FileDialog, maar als ik dit implementeer krijg ik alleen maar compile errors.

Moet ik m'n hele applet omzetten naar een standalone java programmma? Of is er wel een mogelijkheid om files te uploaden via een applet?

Ik ben ook tevreden met een goede google search string. Deze geeft nl niet veel nuttigs: applet upload file.

  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 05:49
Ten eerste zou het prettig zijn als je wat info geeft over de fouten die je krijgt..
Verder kan ik je aanraden hoogte te nemen van de SecurityManager bij het lezen van bestanden.

  • evaarties
  • Registratie: April 2001
  • Laatst online: 09-09 13:46

evaarties

Powerball @ 12.582

Topicstarter
Ik zal even de code plaatsen:
code:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import java.awt.*;
import java.applet.*;

public class wijnhandelBeheerModule extends Applet
{
    Label lTitelBeheerModule = new Label("Wijnhandel Bacchus - Beheermodule");
    Label lOnderdeelBeheerModule = new Label("Wijn toevoegen");

    Label lOpening = new Label("Voer de gegevens in en klik op toevoegen.");
    Label lNaam = new Label("Naam:");
    Label lType = new Label("Type:");
    Label lHerkomst = new Label("Herkomst:");
    Label lVolume = new Label("Volume (ml):");
    Label lPrijs = new Label("Prijs (€):");
    Label lKwaliteit = new Label("Kwaliteit:");
    Label lAfbeelding = new Label("Afbeelding:");

    TextField tfNaam = new TextField("", 30);
    TextField tfType = new TextField("", 30);
    TextField tfHerkomst = new TextField("", 30);
    TextField tfVolume = new TextField("", 10);
    TextField tfPrijs = new TextField("", 10);
    TextField tfKwaliteit = new TextField("", 30);
    TextField tfAfbeelding = new TextField("", 30);

    Button bAfbeelding = new Button("Zoek .jpg");

//    **Waarom werkt dit niet ?
//    FileDialog fdAfbeelding = new FileDialog(this);

    Button bAnnuleren = new Button("Annuleren");
    Button bToevoegen = new Button("Toevoegen");

    public void init ()
    {
      Font fTitel = new Font("Arial", Font.BOLD, 20);
      Font fOnderdeel = new Font("Arial", Font.ITALIC, 18);
      Font fNormaal = new Font("Arial", Font.PLAIN, 12);

      setLayout(null);
      setBackground(Color.lightGray);
      setForeground(Color.black);
      setFont(fNormaal);

      add(lTitelBeheerModule);
      lTitelBeheerModule.setBounds(10, 10, 400, 25);
      lTitelBeheerModule.setFont(fTitel);

      add(lOnderdeelBeheerModule);
      lOnderdeelBeheerModule.setBounds(10, 40, 400, 25);
      lOnderdeelBeheerModule.setFont(fOnderdeel);

      add(lOpening);
      lOpening.setBounds(10, 65, 400, 20);
      add(lNaam);
      lNaam.setBounds(10, 90, 75, 20);
      add(lType);
      lType.setBounds(10, 115, 75, 20);
      add(lHerkomst);
      lHerkomst.setBounds(10, 140, 75, 20);
      add(lVolume);
      lVolume.setBounds(10, 165, 75, 20);
      add(lPrijs);
      lPrijs.setBounds(10, 190, 75, 20);
      add(lKwaliteit);
      lKwaliteit.setBounds(10, 215, 75, 20);
      add(lAfbeelding);
      lAfbeelding.setBounds(10, 240, 75, 20);

      add(tfNaam);
      tfNaam.setBounds(90, 90, 200, 20);
      add(tfType);
      tfType.setBounds(90, 115, 200, 20);
      add(tfHerkomst);
      tfHerkomst.setBounds(90, 140, 200, 20);
      add(tfVolume);
      tfVolume.setBounds(90, 165, 75, 20);
      add(tfPrijs);
      tfPrijs.setBounds(90, 190, 75, 20);
      add(tfKwaliteit);
      tfKwaliteit.setBounds(90, 215, 200, 20);
      add(tfAfbeelding);
      tfAfbeelding.setBounds(90, 240, 200, 20);

      add(bAfbeelding);
      bAfbeelding.setBounds(295, 240, 75, 25);

      add(bAnnuleren);
      bAnnuleren.setBounds(470, 440, 75, 25);
      add(bToevoegen);
      bToevoegen.setBounds(550, 440, 75, 25);
    }
}

Het is totaal nog niet veel, alleen een GUI opbouw. Maar ik krijg al een error als ik de regel met commentaar uncomment. (Het maken van een FileDialog.) Bij compilen krijg ik deze error:
code:
1
2
3
4
5
6
7
8
javac wijnhandelBeheerModule.java

wijnhandelBeheerModule.java:29: cannot resolve symbol
symbol  : constructor FileDialog  (wijnhandelBeheerModule)
location: class java.awt.FileDialog
    FileDialog fdAfbeelding = new FileDialog(this);
                    ^
1 error

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Voor het uploaden van bestanden kun je beter de upload functionaliteiten gebruiken van de browser zelf. Je hebt dan wel iets aan de serverkant nodig die dit verwerkt, maar dit is een stuk simpeler te implementeren, en daarnaast ook een stuk veiliger dan een applet dat allemaal vrijstellingen nodig heeft.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • evaarties
  • Registratie: April 2001
  • Laatst online: 09-09 13:46

evaarties

Powerball @ 12.582

Topicstarter
Op woensdag 27 maart 2002 15:20 schreef Janoz het volgende:
Voor het uploaden van bestanden kun je beter de upload functionaliteiten gebruiken van de browser zelf. Je hebt dan wel iets aan de serverkant nodig die dit verwerkt, maar dit is een stuk simpeler te implementeren, en daarnaast ook een stuk veiliger dan een applet dat allemaal vrijstellingen nodig heeft.
Bedoel je dan gebruik te maken van een htmlformulier oid?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Op woensdag 27 maart 2002 15:23 schreef evaarties het volgende:

[..]

Bedoel je dan gebruik te maken van een htmlformulier oid?
idd

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

ik dacht ergens gelezen te hebben dat als je de applet signed dat je dan wel toegang kunt krijgen van de securitymanager tot de locale files.

<vieze oplossing>
je kan in explorer een applet alle rechten geven, dit gaat alleen te kosten van de veiligheid. (van daar ook de vuile oplossing tags :) )
</vieze oplossing>

  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 05:49
btw, als je de API eens had door gekeken had je zelf al kunnen uitvinden waarom het niet had gewerkt. Je probeert immers een FileDialog een Applet mee te geven, terwijl die alleen maar een Frame accepteerd.

Tevens wil ik je er even op wijzen dat je je niet aan de door Sun gestelde coding style houd. (Alleen eigenlijk de class naam, die hoort met een hoofdletter te beginnen, en package names met een kleine)

  • Xanthus
  • Registratie: Februari 2002
  • Laatst online: 11-07 12:45
Volgens mij kon je wel toegang vragen met java plugin, kijk hier eens(onderste punt)
http://java.sun.com/j2se/1.4/docs/guide/plugin/developer_guide/security.html
Pagina: 1