ajout de fichier via jsp

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

ajout de fichier via jsp

bonjour
je suis toujours sur l'upload des fichiers sur java j'arrive les uploader lorsque je donne le chemin en dur mais lorsque je l'exécute avec une page jsp le fichier n'est complet et les pdf et les fichiers word sont corrompu je ne sais d'où vient le problème voici mon code de page jsp:
 <meta HTTP-EQUIV="Refresh" content="50;URL=http://localhost:8084/xulapps/stage/content/front/index.jsp"> 
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
<%
        String filename= request.getParameter("y");
       
        String title= filename;
        System.out.println("Title est de " +title);
       
        //String ext= filename.substring(filename.lastIndexOf('.')+1, filename.length());
      //title= title.replace( filename.substring(filename.lastIndexOf('.'), filename.length()), "");
      
      // System.out.println(ext);
        String contType= "";
           
      
        AuthenticationUtils.startSession("admin", "admin");
       Store storeRef = new Store(Constants.WORKSPACE_STORE, "SpacesStore");
      String folderPath = "/app:company_home";
      ParentReference companyHomeParent = new ParentReference(storeRef, null, folderPath, Constants.ASSOC_CONTAINS, null);
      
      
       

       RepositoryServiceSoapBindingStub repositoryService =WebServiceFactory.getRepositoryService();
      ContentServiceSoapBindingStub contentService =WebServiceFactory.getContentService();
      NamedValue[] contentProps = new NamedValue[1];
      NamedValue[] titledProps = new NamedValue[2];
      
      
      // le nom du fichier
      companyHomeParent.setChildName("{http://www.alfresco.org/model/content/1.0}yassine.pdf" );
       /*System.out.println(filename);
      String ext= testecriture.Extension(filename);
      title= testecriture.replace(title);*/
      CMLCreate create = new CMLCreate("1", companyHomeParent, companyHomeParent.getUuid(), Constants.ASSOC_CONTAINS, null, Constants.PROP_CONTENT, contentProps);
      // Construct CML Block
      contentProps[0] = Utils.createNamedValue(Constants.PROP_NAME, "yassine");
      
      // Propriété du fichier
      titledProps[0] = Utils.createNamedValue(Constants.PROP_TITLE, title);
      
      titledProps[1] = Utils.createNamedValue(Constants.PROP_DESCRIPTION, "");
      
      CMLAddAspect addAspect = new CMLAddAspect(Constants.ASPECT_TITLED, titledProps, null, "1");
      
            
      CML cml = new CML();
      cml.setCreate(new CMLCreate[] {create});
      cml.setAddAspect(new CMLAddAspect[] {addAspect});
      // Mettre a jour le repositroy
      /*if(ext.equals("txt")){
      contType= "text/plain";}
         
      else if(ext.equals("pdf")){
         contType= "application/pdf";}
         
      else if(ext.equals("doc")|| ext.equals("docx")){
         contType= "application/msword";} */
         
      
      ContentFormat format = new ContentFormat("application/pdf", "UTF-8");
      
      UpdateResult[] result = WebServiceFactory.getRepositoryService().update(cml);
      Reference content = result[0].getDestination();
      InputStream is = request.getInputStream();
      byte[] buffer    = new byte[32];
      ByteArrayOutputStream os = new ByteArrayOutputStream(is.available());
       
      int    l;
       do {
            l = is.read(buffer);
           
             os.write(buffer,0,l);
                        
       } while(is.available() > 0);
      
          // le nom du fichier
             contentService.write(content, Constants.PROP_CONTENT, os.toByteArray(), format);
              
4 Replies
mdutoo
Member II

Re: ajout de fichier via jsp

Bonjour

A l'instinct, problème Java classique d'IO : rajouter à la fin un close() voire un flush() juste avant sur les streams manipulées.

Cordialement,
Marc
yassine_036
Member II

Re: ajout de fichier via jsp

merci pour ton aide
au fait j'avais ce que vous m'avez demandé, mais je ne sais coment faire pour le flush()??
is.close();
os.close();
mais ca ne marche toujours pas le fichier est toujours incomplet, il ne fait tout le while, j'ai un fichier .txt de 38Ko je n'uploade qu'un fichier de 7,3Ko ca si j'ai de la chance sinon c'est 3.3 Ko
merci
cordialement
sebguillomon
Member II

Re: ajout de fichier via jsp

Moi je fait comme ça ….

private static byte[] getOutputBytes (InputStream is)throws Exception{
   ByteArrayOutputStream bos = new ByteArrayOutputStream();
      
        byte[] buf = new byte[2048];
        int len;
        while ((len = is.read(buf)) > 0)
        {
            bos.write(buf, 0, len);
        }
        return bos.toByteArray();
}
   
yassine_036
Member II

Re: ajout de fichier via jsp

oui c'est ce que je fais, enfin c'est la même chose que ma fonction mais ca m'ajoute des caractères bizarre pour les fichiers word et lorsque je l'ouvre l'office me demande si je veux installer un logiciel de conversion
je ne sais pas c'est quoi le problème voici encore une fois mon code:

InputStream is = request.getInputStream();
byte[] buffer = new byte[1024];
      ByteArrayOutputStream os = new ByteArrayOutputStream(is.available());
      
      int l = 0;
      while (l >= 0) {
         l = is.read(buffer);
         if (l !=  -1) {
            os.write(buffer, 0, l);
         }
      }
      
      
      is.close();
      os.close();
      contentService.write(content, Constants.PROP_CONTENT, os.toByteArray(), format);
merci de votre aide cordialement