begin process at 2012 02 14 13:00:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

Au secours

 > 

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:47:18 | 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

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

Générer une image et l'afficher dans une page du navigateur [ par xylo2 ] 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 Co ouverture de fichier depuis une servlet [ par gregxyz ] Bonjour,   j'ai un formulaire dans une page jsp qui redirige vers ma servlet,   dans cette servlet je genere un flux excel avec POI et ensuite je Probleme avec une servlet [ par kgadhi ] Bonjour, je suis entrain de développer une application qui récupére une donnée sur un formulaire "page1.jsp" et l'affiche sur une page web "page2.jsp" DisplayMode, Linux et VidMode extension. [ par akirox ] Bonjour, Voila mon problème et que j'aimerai pouvoir gérer la résolution de l'écran (mettre en fullScreen) sous linux qui ne supporte pas les DisplayM Acces à un WebService [ par gcorbineau ] Bonjour à tous,J'essaye d'accéder à un service web en l'occurence celui de "capescience.com "  mais voila il me retourne toujours le message d'erreur JRadioButton [ par mastermario ] Bonjours a tous, voila mon probleme J'ai deux JRadioButton ( Celsius et Fahrenheit pour une conversion de température ) Je voudrait que lorsque l'un Probleme déclaration de fonction [ par developvbdebut ] Bonjour tout le mondeJ'ai un probleme pour la réalisation d'une fonction.Voici le code.public instruct() {if(c.bcaf.equals("café") && sr==0) ||(c.bcaf Probleme bouton et fonction [ par developvbdebut ] Bonsoir tout le mondeJe souhaiterai initialiser des bouton.J'ignore comment faire car c'est dans une fonction.public class Monnayeur {public < lien href et jsp/servlet [ par kgadhi ] Bonjour tous le monde,J'ai un petit probleme et j'ai besoin de votre aide,j'ai une servlet qui fait appel à une page jsp:accueil.jsp:%@page contentTyp FileChooser + extension [ par samplaid ] [code]             JFileChooser fc = new JFileChooser();             int res = fc.showSaveDialog(null); [/code] Bonjour comment ajouter l'extension xm


Nos sponsors


Sondage...

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,638 sec (3)

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