upload fichier (application serveur?)

upload fichier (application serveur?) - Java - Programmation

Marsh Posté le 22-02-2007 à 14:26:05    

Bonjour,
je fait un applet java que le client peux executer par son navigateur.
 
Il faut qu'il puisse uploader un fichier, le parcours de son DD est fait.
 
maitenant il me faut le reste et je sais vraiment pas par ou commencer.
 
il faut une application serveur qui tourne aussi?
 
ou le client tout seul peux ecrire sur le serveur?
je sais meme pas comment permettre au client d'uploader un fichier texte
 
j'aimerais les lignes directrices (methodes, variables..., socket...FTP, HTTP..)
 
merci

Reply

Marsh Posté le 22-02-2007 à 14:26:05   

Reply

Marsh Posté le 22-02-2007 à 15:22:11    

J'ai reussi a  uploader un fichier texte mais je pense pas que ma méthode soit optimale : regarder ce lien c est exactement ce que je fait : 2 classes (c est facil).
http://www.developpez.net/forums/s [...] p?t=128204
 
mais cependant j'éprouve quelques problemes de connections (si j'ai filleZilla aussi connecté)
 
mon application doit permettre a plusieurs utilisateurs (voir plein) d'uloader des mp3
 
Quelle méthode me conseignez vous?
merci beaucoups


Message édité par felben86 le 24-02-2007 à 12:11:28
Reply

Marsh Posté le 22-02-2007 à 19:26:02    

cette méthode creer une socket sur host (exemple ftpperso.free.fr)
et ensuite va executer des commandes sur le serveur de type UNIX
 
exemple de connexion (login : )
        connectionSocket = new Socket(host, port);
        outputStream = new PrintStream(connectionSocket.getOutputStream());
        inputStream = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
login :  
      outputStream.println("user " + username);
      return reply = inputStream.readLine();
 
upload :  
       RandomAccessFile infile = new RandomAccessFile(fileName, "r" );
       FileInputStream fileStream = new FileInputStream(infile.getFD());
 
       outputStream.println("stor fichier.txt c:\fichier.txt" );
       if (inputStream.readLine() est une bonne reponse)
      {
                OutputStream out = pasvSocket.getOutputStream();
                byte b[] = new byte[BLOCK_SIZE];
                int amount;
                while ((amount = in.read(b)) > 0)
                {
                    out.write(b, 0, amount);
                 }
      }
 
 
il y a des erreurs mais c est juste pour que vous voyez la "geule du code" et me dire
si c'est une bonne méthode sachant que beaucoups d'utilisateurs vont se connecter en meme temps.
bonne journée


Message édité par felben86 le 24-02-2007 à 11:58:15
Reply

Marsh Posté le 07-07-2008 à 19:39:38    


Il y a 2 jar à installer :
 
commons-io-1.3.2.jar
commons-fileupload-1.1.1.jar
 
 


import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;
import java.io.*;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.FileItem;
import java.util.List;
import java.util.Iterator;
import org.apache.commons.fileupload.*;
import java.util.ResourceBundle;
 
public class uploadAction extends Action {
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                                 HttpServletResponse response) {
 
        System.out.println(request.getParameter("test" ));
 
        doProcess(request, response);
 
        return null;
    }
 
    protected void doProcess(HttpServletRequest req, HttpServletResponse resp) {
 
        String dirImg = "chemin_sur_le_serveur" ;
        HttpServletRequest request = req;
        String fileName = "";
        InputStream is = null;
 
        DiskFileItemFactory factory = new DiskFileItemFactory(4096000,
                new File(System.getProperty("java.io.tmpdir" )));
        ServletFileUpload sfu = new ServletFileUpload(factory);
        List<FileItem> fileItems = null;
        try {
            fileItems = sfu.parseRequest(request);
        } catch (FileUploadException ex) {
        }
        Iterator<FileItem> it = fileItems.iterator();
 
        while (it.hasNext()) {
            FileItem fileItem = it.next();
            if (!fileItem.isFormField()) {
                fileName = fileItem.getName();
                System.out.println(fileName);
                try {
                    is = fileItem.getInputStream();
                    OutputStream os = new FileOutputStream(
                            dirImg + fileName);
                    int bytesRead = 0;
                    byte[] buffer = new byte[512 * 1024];
                    while ((bytesRead = is.read(buffer, 0, 512 * 1024)) != -1) {
                        os.write(buffer, 0, bytesRead);
                    } //fin while
                    os.close();
                    is.close();
 
                } catch (IOException ex1) {
                }
            }
        }


---------------
Nation spatiale : la chaîne de l'Arche interstellaire.
Reply

Marsh Posté le 08-07-2008 à 14:10:06    

Bravo le remontage de post qui date de un an pour donner une solution qui n'a pas grand chose à voir (il n'avais pas de server d'application et encore moins d'appli struts)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed