begin process at 2012 02 15 19:53:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Applets

 > 

Affichage d'une image locale dans une applet


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Affichage d'une image locale dans une applet

dimanche 5 juillet 2009 à 20:33:13 | Affichage d'une image locale dans une applet

manu94

Bonjour,
Sur mon site perso, j'ai une page permettant d'uploader des images sur mon site. Cette partie fonctionne, seulement je voudrai pouvoir prévisualiser l'image avant le téléchargement.
Je pensais le faire avec une applet, mais je rencontre quelques difficultés. Et d'autant plus que mon niveau en java est plutôt nul.
Suite à ce que j'ai pu lire sur le sujet, j'ai créé l'applet, je l'ai mise dans un jar et je l'ai signée.
Le problème que je rencontre est le suivant :
- Si je sélectionne l'image à l'aide d'un FileDialog déclenché à partir d'un bouton dans l'applet, j'arrive à l'afficher.
- Si je passe le nom du fichier par javascript du formulaire vers l'applet, j'obtiens l'erreur suivante : erreur java.security.AccessControlException: access denied (java.io.FilePermission D:\Photos\Nord\small\sP1020324.JPG read)
Par ce qu'un bout de code sera surempent plus clair, voici ce que j'ai fait :

Page html de test :
<html>
<head>
<script type="text/javascript" language="javascript">
function fileDisplay2() {
var strTmp = escape(document.image.userfile2.value);

document.myApplet.displayFile2(strTmp);
}
</script>

<script type="text/javascript" language="javascript">
function strEscape() {

var strTmp2 = encodeURI(document.image.userfile2.value);

document.myApplet.setFilePath(strTmp2);
}
</script>
</head>
<body bgcolor="#ffffff">
<applet codebase="./" code="localfile2.class" archive="localfile2.jar" name="myApplet" width="500" height="500"></applet>
<form name="image" enctype="multipart/form-data" action="" method="POST">
    <!-- Fonction de passage du répertoire à l'applet -->
    <a href="javascript:strEscape();">Appel de setFilePath</a>
    <p>
    <!-- Fonction de passage du nom du fichier à l'applet -->
    <a href="javascript:document.myApplet.setFileName('sP1020324.JPG');">Appel de setFileName</a>
    <p>
    <!-- Fonction de test de récupération de données de l'applet  -->
    <a href="javascript:alert(document.myApplet.getString());">Appel de getString</a>
    <p>
    <!-- Champ permettant de saisir un nom de fichier (par exmple : D:\Photos\JBVY\09-06-06\small\sP1020324.JPG) -->
    <INPUT type="text" name="userfile2" id="userfile2" size="90">
    <p>
    <!-- Fonction de demande d'afichage du fichier dans l'applet  -->
    <input type=button value="Display" onClick="javascript:fileDisplay2(encodeURI(document.image.userfile2.value));"><p>

</form>
</body>
</html>

Code de l'applet :
import java.applet.*;
import java.awt.*;
import java.util.*;
import java.lang.*;
import java.text.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import java.net.URLDecoder;


public class localfile2 extends Applet {
     String sFileName;
     ImageIcon icon;
     Image img;
    String sjsFileName;
    String sjsFilePath;
   
    public localfile2() {
        Panel p = new Panel();
        Font f;
        String osname = System.getProperty("os.name","");
        if (!osname.startsWith("Windows")) {
            f = new Font("Arial",Font.BOLD,10);
        } else {
            f = new Font("Verdana",Font.BOLD,12);
        }
        p.setFont(f);
        p.add(new Button("Open"));
       
        p.setBackground(new Color(255, 255, 255));
       
        add("North",p);
       
    }
    public boolean action(Event evt, Object arg) {
        if (arg.equals("Open")) {
            System.out.println("OPEN CLICKED");
            // cette méthode fonctionne
            Frame parent = new Frame();
            FileDialog fd = new FileDialog(parent, "Please choose a file:", FileDialog.LOAD);
            fd.show();
            String selectedItem = fd.getFile();
            if (selectedItem == null) {
                // no file selected
            } else {
                // read the file
                //System.out.println("reading file " + fd.getDirectory() + File.separator + fd.getFile() );
                sFileName = fd.getDirectory() + File.separator + fd.getFile();

                displayFile(sFileName);
            }       
        } else return false;
        return true;
    }

    public void paint(Graphics g)
    {
        int width, height;
       
        if (img!=null) {
                width = img.getWidth(this);
                height = img.getHeight(this);
            if (width < height) {
                if (height <= 500)    {
                    g.drawImage(img, 0, 40, this);
                }else {
                    double ratio = 500 / (double) height;
                    double temp2 = width*ratio;
                    int temp = (int) temp2;
                    g.drawImage(img, 0, 40, temp, 500, this);
                }
            } else {
                if (width <= 500)    {
                    g.drawImage(img, 0, 40, this);
                }else {
                    double ratio = 500 / (double) width;
                    double temp2 = height*ratio;
                    int temp = (int) temp2;
                    g.drawImage(img, 0, 40, 500, temp, this);
                }
            }
        }   
    }

    public void displayFile (String sFileName){
        System.out.println("file name : " + sFileName);
        try {
            String slocalFileName = URLDecoder.decode(sFileName, "UTF-8");
            System.out.println("slocalFileName : " + slocalFileName);
            icon = new ImageIcon(slocalFileName);
            img = icon.getImage();
           
            repaint();
        }
        catch (Exception e)
        {
            System.out.println("erreur " + e.toString());
        }
    }
// quand j'appelle cette fonction directement de la page html, ça génère l'exception
    public void displayFile2 (String sPathName){
        System.out.println("path name : " + sPathName);

        try {
            String slocalFileName = URLDecoder.decode(sPathName, "UTF-8");

            System.out.println("slocalFileName : " + slocalFileName);
            icon = new ImageIcon(slocalFileName);
            img = icon.getImage();
           
            repaint();
        }
        catch (Exception e)
        {
            System.out.println("erreur " + e.toString());
        }
    }

    public String getString() {
        return sFileName;
    }

    public void setFileName(String s)  throws Exception
    {
        try {
             sjsFileName = new String( s );
            System.out.println("sjsFileName : " + sjsFileName);
             return ;
        }
        catch  (Exception e)
        {
            System.out.println("erreur " + e.toString());
        }
    }
   
    public void setFilePath(String s)  throws Exception
    {
        try {
             sjsFilePath = new String( s );
            System.out.println("sjsFilePath  (encodé): " + sjsFilePath);
            System.out.println("sjsFilePath  (décodé): " + URLDecoder.decode(sjsFilePath, "UTF-8"));
             sjsFilePath = new String( URLDecoder.decode(sjsFilePath, "UTF-8") );
             return ;
        }
        catch  (Exception e)
        {
            System.out.println("erreur " + e.toString());
        }
    }
}

Je voulais uniquement me servir de l'applet pour afficher l'image.
Mon formulaire définitif est écrit en php, et utilise la variable $_FILES, qui contient des informations sur le fichier à télécharger.
Le problème si je sélectionne le fichier directement dans l'applet est que cette variable globale $_FILES n'est pas renseignée et que je ne sais pas comment le faire "à la main".

Merci de m'aider à résoudre ce problème d'accès.
Emmanuel


Cette discussion est classée dans : applet, string, system, out, println


Répondre à ce message

Sujets en rapport avec ce message

compatibilité argument File String [ par sido722 ] Mon erreurMafenetre4.java:181: tests(java.io.File) in Mafenetre4 cannot be applied to (java.lang.String) tests(file.getAbsolutePath()); acces au contenu d'un message avec javamail [ par amine hayat ] Bonjour. Voici mon problème.Je suis en train de faire une appli qui doit recevoire et envoyer des emails dans une boîte mail. mon probléme est que je AIDE sur Connexion BDD MySQL [ par zeldoi5 ] Bonjour tout le monde!Je sais que le problème dont je vais parler a déjà été traité plusieurs fois... Mais impossible de me connecter à ma base de don Surcharge : aide [ par Tachag ] Bonjour,Alors, j'ai essayé de faire une surcharge.  Ma question est : pourquoi lorsque je fais execute file, l'information n'apparaît pas?Je vous tran JPANEL [ par LeNeutrino ] je suis en projet et je souhaiterais faire un formulaire et pour les insertions de données et pour les consultations. j'utilise un jdbnavcombox relié problème d'affichage d'une chaine dans un servlet [ par 2tsiris ] Bonjour à tous, j'ai créer un servlet qui récupère une valeur dans une table mysql.J'ai donc créer une méthode qui se connect à la base et effectue optimisation d'un code [ par laurentbarbotin ] je souhaiterais optimiser un code et faire le pseudo code correspondant svp aidez moiimport biputil.*;import java.io.*; /** * @com.register ( c Reseau et internet [ par felouss ] bonjour,j ai un probleme pour envoyer un gros fichier via UDP,udp ne permet l envoie de paquet > 65kilo,pour cela du coté serveur j ai decoupé le fich Applet listant les system.out.println [ par stongolm ] Bonjour,   Je suis depuis peu le papa de deux magnifiques petits main() qui fonctionnent très bien ! Mais je viens d'apprendre qu'il me fallait rendre probléme d'execution [ par itafomis ] bonjour tout le monde.je veux me connecter a une base de donnée sql 2000 a partir d'eclipse et voila le code que j'ai utiliséimport java.*;<font color


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,870 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales