Création d'une classe de validation de téléchargement de fichier

Un plug-in de validation de téléchargement de fichier est démarré à chaque fois qu'un fichier est téléchargé dans Web Content Manager. Ce démarrage se produit notamment lorsque des fichiers sont téléchargés dans des éléments de ressource de fichier, d'image et de feuille de style et que des images sont téléchargées dans des éléments de texte enrichi ou HTML. Le plug-in est appelé lors du traitement de "validation" qui est utilisé par Web Content Manager au cours du téléchargement de fichiers.

Pourquoi et quand exécuter cette tâche

Pour créer un plug-in de validation de téléchargement de fichier, vous devez créer une classe de validation de téléchargement de fichier, puis enregistrer cette dernière en la déployant sur le serveur.

Procédure

  1. Créez une classe java qui implémente l'interface com.ibm.workplace.wcm.api.extensions.validation.FileUploadValidationPlugin. Cette classe peut implémenter les méthodes suivantes :
    public String getName()
    Cette méthode renvoie le nom unique du plug-in de validation de téléchargement de fichier.
    public boolean validate(InputStream p_inptStream, FileUploadValidationContext p_context)
    Cette méthode génère l'exception FileUploadValidationException.

    Consultez la documentation Javadoc pour plus d'informations. The Javadoc files for Web Content Manager are in the PortalServer_root/doc/Javadoc/spi_docs/com/ibm/workplace/wcm directory.

  2. Mettre en œuvre validate()method. Cette méthode contient le code qui sera exécuté lors de l'appel du plug-in au cours du téléchargement d'un fichier. S'il est validé, le téléchargement du fichier se poursuit. Dans le cas contraire, le téléchargement du fichier s'arrête. Vous pouvez afficher un message dans l'interface utilisateur en ajoutant le code suivant dans la méthode de validation :
    throw new FileUploadValidationException( your own message );
    Par exemple:
    package pers.smp.extension.test.validation;
    
    import java.io.InputStream;
    import java.util.logging.Logger;
    
    import com.ibm.workplace.wcm.api.extensions.validation.FileUploadValidationContext;
    import com.ibm.workplace.wcm.api.extensions.validation.FileUploadValidationException;
    import com.ibm.workplace.wcm.api.extensions.validation.FileUploadValidationPlugin;
    import com.ibm.workplace.wcm.services.validation.FileUploadValidationContextImpl;
    
    public class SMPValidation1 implements FileUploadValidationPlugin
    {
       private final long MAX_SIZE_IMAGES = 512 * 1024;
       private final long MAX_SIZE_FILES = 1024 * 1024;
    
       private static Logger s_log = Logger.getLogger(SMPValidation1.class.getName());
       
       public String getName()
       {
          return "SMPValidation1";
       }
    
       public boolean validate(InputStream p_inptStream, FileUploadValidationContext p_context) 
    throws FileUploadValidationException
       {
          s_log.info("File Name : " + p_context.getFileName() );
          s_log.info("File Type : " + p_context.getMimeType() );
          s_log.info("File Size : " + p_context.getFileSize() );
          s_log.info("Document Type : " + p_context.getDocumentType() );
    
          boolean valid = true;
          String message = null;
          
          String mimeType = p_context.getMimeType();
          
          if ( mimeType != null && mimeType.startsWith( "image/" ) )
          {
             if ( ! (mimeType.equalsIgnoreCase( "image/gif") ||  mimeType.equalsIgnoreCase( "image/jpeg") ) )
             {
                throw new FileUploadValidationException( "Invalid image type : " + mimeType + 
    " will only accept GIF and JPG images" );
             }
             if ( p_context.getFileSize() > MAX_SIZE_IMAGES )
             {
                throw new FileUploadValidationException( "Image is too big 500K is maximum size allowed for images.  Size is 
    " +  p_context.getFileSize());
             }
          }
          else
          {
             if ( p_context.getFileSize() > MAX_SIZE_FILES )
             {
                throw new FileUploadValidationException( "File is too big 1M is maximum size allowed for 
    " + mimeType + ".  Size is " +  p_context.getFileSize());
             }
             
          }
          
          return valid;
       }
    }
  3. Un fichier plugin.xml est nécessaire, que le déploiement se fasse avec un fichier WAR, EAR, ou JAR. Si le déploiement se fait via une application dans un fichier WAR ou EAR, ajoutez le fichier plugin.xml dans le dossier "WEB-INF" de l'application. Si vous utilisez un fichier JAR, ajoutez le fichier plugin.xml à la racine de ce fichier JAR.
    <?xml version="1.0" encoding="UTF-8"?>
    <plugin id="pers_smp_extension_test"
            name="SMP Test Extensions"
            version="1.0.0"
            provider-name="IBM">
            
      <extension
         point="com.ibm.workplace.wcm.api.FileUploadValidationPlugin" id="SMPValidation1">
         <provider class="pers.smp.extension.test.validation.SMPValidation1"/>
      </extension>
    
    </plugin>

Que faire ensuite

  • Chaque plug-in est représenté par une balise <extension></extension> unique.
  • La valeur de l'attribut de point doit être com.ibm.workplace.wcm.api.FileUploadValidationPlugin.
  • Entrez l'ID de votre choix.
  • Indiquez la classe de fournisseur associée à votre plug-in.
Naming conventions :
Si vous créez une nouvelle application de plug-in associée aux mêmes nom et ID qu'un plug-in existant, le nouveau plug-in risque de remplacer le premier. Lorsque vous créez des applications de plug-in, vérifiez que les éléments suivants sont uniques sur votre système :
  • L'ID plug-in, le nom de plug-in et l'ID extension du fichier plugin.xml.
  • Le nom de classe qualifié complet et le chemin de toutes les classes dans l'application.
  • le chemin d'accès aux fichiers de l'application.