UploadFile tramite applet

cancel
Showing results for 
Search instead for 
Did you mean: 
piunreks
Member II

UploadFile tramite applet

Buongiorno a tutti,
scrivo un nuovo 3d che va a completamento del mio 3d di ieri sul download di una file tramite applet. Utilizzo Alfresco 3.2.
Riassumendo, ho un'applet che deve scaricare un file da alfresco, eseguire un'applicazione e fare l'upload del file elaborato.

L'upload lo vorrei fare nello stesso spazio dove c'è il file originale (i file avranno nomi diversi) ma non so come fare, sto crecando di usare l'UploadContentServlet che dive di usare questo percorso:
/alfresco/upload/workspace/SpacesStore/0000-0000-0000-0000/myfile.pdf + il ticket
dove 0000-0000 etc rappresentano il  "node id". Io ho preso in input il parametro nodeRef del file ma immagino che mi serva il nodeRef dello spazio in cui è il file, qualcuno sa come fare?

Grazie a coloro vorranno spendere un po' di tempo per aiutarmi.

Nicola.
1 Reply
piunreks
Member II

Re: UploadFile tramite applet

giusto per buttar un po' di codice sul fuoco io fin'ora ho fatto questo, che non mi da errori ma poi comunque non mi ritrovo il file in Alfresco….

        File inputFile = new File(localTmpPath + "pippo.txt");
        String remoteFileName = getUploadUrl();
        URL url = new URL(remoteFileName);
        URLConnection ucon = url.openConnection();
       
        BufferedInputStream in = new BufferedInputStream(new FileInputStream(inputFile));
        ucon.setDoOutput(true);
        BufferedOutputStream out = new BufferedOutputStream(ucon.getOutputStream());

        int i = 0;
        byte[] bytesIn = new byte[1024];
        while ((i = in.read(bytesIn)) >= 0) {
                out.write(bytesIn, 0, i);
        }
        out.flush();
        out.close();
        in.close();

dove il metodo getUploadUrl è:

    public String getUploadUrl(){
        int port;
   if(getDocumentBase().getPort()!=-1){
            port = getDocumentBase().getPort();
        } else {
            port = 8080;
        }
       
        Socket socket = null;
        try {
            socket = new Socket(getDocumentBase().getHost(), port);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        String ip = socket.getLocalAddress().getHostAddress();
               
        // Get a reference to the
        AuthenticationServiceSoapBindingStub authenticationService = null;
        try {
            authenticationService = (AuthenticationServiceSoapBindingStub) new AuthenticationServiceLocator()
      .getAuthenticationService(new URL("http://'+ip +":"+port+"/alfresco"+"/api/"+"AuthenticationService"));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        // Start the session
        AuthenticationResult result = null;
        try {
            result = authenticationService.startSession("admin", "admin");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        ticket = result.getTicket();
        String res = "http://'+ip +":"+port+"/alfresco/upload/"+ nodeRef.replace(":", "").replace("//", "/")+"/"+fileName"?ticket="+ticket; //***
        jTextField3.setText(res);
        return res;
    }

*** chiarisco la quartultima riga…

nodeRef l'ho ottenuto come parametro (tramite actionContext.nodeRef) definendolo nel file web-client-config-custom.xml e ottengo una String del tipo workpace://SpaceStore/0000-0000-0000-0000-0000, per questo rimuovo il : e la doppia barra in modo da ottenere un formato simile a quanto richiesto dall'UploadContentServlet.