begin process at 2012 02 15 10:54:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

 > 

 > 

Générer une image et l'afficher dans une page du navigateur


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

Générer une image et l'afficher dans une page du navigateur

mardi 5 avril 2005 à 11:46:22 | Générer une image et l'afficher dans une page du navigateur

xylo2

J'ai posté ce message dans Servlet et JavaServerPage pour Java mais c'est ptete mieux de ce côté pour obtenir une réponse

Bonjour,
Je travaille actuellement sous Websphere Portal 5.1 et je fais un portlet qui suit le framework Struts.

Voilà mon problème, j'ai sous le Web Content Management du server enregistré des images et documents divers. Je n'arrive pas à utiliser l'API WCM pour générer des liens vers ces documents alors je refais le monde. J'essaye donc d'envoyer les données du documents dans une page du navigateur avec l'entête correspondante (le genre de choses qui fonctionne très facilement en php)

Voici mon code
 public ActionForward execute (ActionMapping mapping, ActionForm form,HttpServletRequest request,HttpServletResponse response)throws Exception {
  String documentIdString=request.getParameter("id");
  Workspace ws=Outils.getWorkspace(request);
  try{
   DocumentId id=ws.createDocumentId(documentIdString);
   if (documentIdString.indexOf("LibraryImageComponent")>-1){
    LibraryImageComponent document=(LibraryImageComponent) ws.getById(id);
    if (document!=null){
     genereFile(document, response);
    }
   } else if (documentIdString.indexOf("LibraryFileComponent")>-1){
    LibraryFileComponent document=(LibraryFileComponent) ws.getById(id);
    if (document!=null){
     genereFile(document, response);
    }
   }
  } catch (Throwable t){
   //t.printStackTrace();
  }
  return null;
 }
 
 public void genereFile(byte[] data, String fileName, HttpServletResponse response){
  System.err.println("genereFile(..., "+fileName+", "+response+")");
  String extension=null;
  String contentType=null;
  if (data!=null && fileName!=null){
   int posPoint=fileName.lastIndexOf('.');
   extension=fileName.substring(posPoint+1).toLowerCase();
   
   if (extension.equals("asf")) contentType="video/x-ms-asf";
   else if (extension.equals("avi")) contentType="video/avi";
   else if (extension.equals("doc")) contentType="application/msword";
   else if (extension.equals("zip")) contentType="application/zip";
   else if (extension.equals("xls")) contentType="application/vnd.ms-excel";
   else if (extension.equals("gif")) contentType="image/gif";
   else if (extension.equals("jpg")) contentType="image/jpeg";
   else if (extension.equals("jpeg")) contentType="image/jpeg";
   else if (extension.equals("wav")) contentType="audio/wav";
   else if (extension.equals("mp3")) contentType="audio/mpeg3";
   else if (extension.equals("mpg")) contentType="video/mpeg";
   else if (extension.equals("mpeg")) contentType="video/mpeg";
   else if (extension.equals("rtf")) contentType="application/rtf";
   else if (extension.equals("htm")) contentType="text/html";
   else if (extension.equals("html")) contentType="text/html";
   else if (extension.equals("asp")) contentType="text/asp";
   else contentType="application/octet-stream";
   
   response.reset();   
   response.setContentType(contentType);
   response.setContentLength(data.length);
   OutputStream os;
   try {
    os = response.getOutputStream();
    System.err.print("response="+response+", os = "+os+", data=");
    System.err.println(data+", extension="+extension+", contentType="+contentType);
    if (os!=null){
     os.write(data);
     os.flush();
     os.close();
    }
   } catch (Throwable t) {
    t.printStackTrace();
   }
  }
 }
 
 public void genereFile(LibraryFileComponent file, HttpServletResponse response){
  System.err.println("genereFile("+file+", "+response+")");
  byte[] data=null;
  String fileName=null;
  if (file!=null){
   try {
    System.err.println("file!=null");
    data = file.getFile();
    fileName=file.getFileName();
    genereFile(data, fileName, response);
   } catch (Throwable t) {
    t.printStackTrace();
   }
  }
 }

 public void genereFile(LibraryImageComponent file, HttpServletResponse response){
  System.err.println("genereFile("+file+", "+response+")");
  byte[] data=null;
  String fileName=null;
  if (file!=null){
   System.err.println("file!=null");
   try {
    data = file.getImage();
    fileName=file.getImageFileName();
    genereFile(data, fileName, response);
   } catch (Throwable t) {
    t.printStackTrace();
   }
  }
 }

 
}

Et voici le log que ça me génère (SystemErr.log)
 genereFile(com.ibm.workplace.wcm.api.WCM_LibraryImageComponent@71373fd7, com.ibm.wps.struts.base.WpsStrutsPortletResponseWrapper@2a9ffd6)
file!=null
genereFile(..., 2004-06-24-02.jpg, com.ibm.wps.struts.base.WpsStrutsPortletResponseWrapper@2a9ffd6)
response=com.ibm.wps.struts.base.WpsStrutsPortletResponseWrapper@2a9ffd6, os = null, data=[B@b26ffd0, extension=jpg, contentType=image/jpeg

Je ne comprends pas pourquoi le response.getOutputStream() renvoit null (response.getWriter() aussi)
De plus, une fois ma page chargée, l'affichage est... la dernière page sur laquelle il y avait un lien vers un document

Pourtant la JavaDoc de Struts dit à propos de la méthode exécute
 Process the specified HTTP request, and create the corresponding HTTP response (or forward to another web component that will create it), with provision for handling exceptions thrown by the business logic. Return an ActionForward instance describing where and how control should be forwarded, or null if the response has already been completed.

Donc mes questions sont :
- Comment bien envoyer mes données vers le flux de sortie ?
- Dois-je changer le void en mes fonctions genereFile en HttpServletResponse ? (pourtant en java, les paramètres sont passés en référence et non en recopie ?)

Merci d'avance pour votre aide



Totote
retrouvez moi sur totolmi


Cette discussion est classée dans : extension, response, equals, contenttype, generefile


Répondre à ce message

Sujets en rapport avec ce message

Retrouver l'executable associe à l'extension d'un fichier ? [ par Cytop ] Hello !!!Je recherche à retrouver le chemin de l'application qui lance les fichiers en .xxxPar exemple si je lance un .htm, est ce qu'il y a une manie extension dans fileslistbox [ par harlock ] Je voudrais savoir s'il est possible de ne pas afficher les extensions dans un filelistbox..merci d'avance Extension dans Commondialog [ par Pascal MILLIEZ ] Comment changer en temps réel l'extension se trouvant dans le nom du fichier, lorsque l'utilisateur change l'extension dans la zone liste du commondia Rattachement d'une extension [ par Brodeur ] Re bonjour a tous. Cette fois-ci, je ne demandais comment faire pour que lorsque mon programme se lance, il associe toutes les extensions ( par exempl Lire des fichiers d'extension msg à partir de VB [ par Gbrissot ] Bonjour,je cherche à lire des fichiers d'extension msg à partir de VB.En effet, dans une application je sauvegarde les messages que j'ai dans mon Inbo Lire un mail d'extension msg à partir de VB [ par Gbrissot ] Bonjour,j'ai sauvegardé dans une apllication des messages de ma boîte mail à partir d'Outlook. Les fichiers ainsi sauvegardé sur un disque local ont l Comment cacher l'extension des fichier ds un File ListBOX [ par KoZo ] Comment cacher l'extension des fichier ds un File ListBOX.les File List Box affiche tous les fichiers d u nrepertoire.mais comment laisser rien que le urgent : setup [ par mikax ] j'ai besoin d'insérer dans le setup de mon application un dossier entier (sans extension) et non pas un fichier (avec extension).alheureusement l'assi Association Extension d'un fichier <-> Icone [ par Schum ] Voilà, j'aimerai que mon programme associe à un fichier son icône telle qu'elle est dans Windows.Mais je ne veux pas une liste non exaustive des icone Extension MS-DOS, parametres URGENT !!! [ par slum ] Voilà le problème :J'utilise le shell pour ouvrir une fenetre MS-DOS. Mais je dois rajouter une commande, une variable "empl".LE code donne :Shell ("m


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,482 sec (4)

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