2010-12-03 51 views
0

J'ai une image bufferedImage créée en utilisant J2D dans une applet. Je veux télécharger ceImage tamponné en utilisant HTTP Post @http://localhost:3001/upload/file.Java HTTP Post Applet Server - Généré en interne Image

EDIT: J'ai un serveur ROR qui gère le serveur des choses, je cherche le code Java pour le client.

Tous les exemples que je peux trouver impliquent le téléchargement de fichiers.

Quelqu'un sait comment télécharger une image tamponnée?

Cheers,

slotishtype

+0

Premier résultat dans google was this link http://www.java-tips.org/java-ee-tips/java-servlet/how-to-return-an-i mage-in-a-servlet.html – newbie

+0

Oui, mais c'est un code de servlet. Je suis à la recherche du code client qui s'exécute dans l'applet. Bon point cependant, j'ai modifié la question. – slotishtype

+0

La réponse à cette question pourrait être un peu d'aide: http://stackoverflow.com/questions/3577834/how-to-send-an-image-from-a-java-applet-to-javascript –

Répondre

0

OK, donc voici le code qui crée le BufferedImage, il code comme une chaîne base64, puis en utilisant les messages de la bibliothèque des communes apache le string sur http à un serveur ROR.

 BufferedImage bi = new BufferedImage(110, 110, BufferedImage.TYPE_INT_RGB); 
     Graphics2D g2 = bi.createGraphics(); 
     AffineTransform saveTX = new AffineTransform(); 
     saveTX.translate(translateX, translateY); 
     saveTX.scale(0.2, 0.2); 
     g2.setTransform(saveTX); 
     this.paint(g2); 

     ImageInputStream bigInputStream = ImageIO.createImageInputStream(bi); 

     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     ImageIO.write(bi, "BMP", baos); 
     byte[] bytes = baos.toByteArray(); 
     String dataImg = new Base64().encodeBase64String(bytes); 

     PostMethod post = new PostMethod("http://localhost:3001/upload/file"); 

     post.addParameter("upload[test]", dataImg); 

     HttpClient client = new HttpClient(); 
     int status = client.executeMethod(post); 

     g2.dispose(); 

Le serveur ROR prend simplement la chaîne, le décode et enregistre le disque dur ....

require "base64" 
class UploadController < ApplicationController 

#Token = nil 
skip_before_filter :verify_authenticity_token 

def index 
    render :file => 'app\views\upload\uploadfile.html.erb' 
end 
def file 

File.open('test.gif', 'wb') do|f| 
    f.write(Base64.decode64(params[:upload][:test])) 
end 

    render :text => "File has been uploaded successfully" 
end 

fin

Merci pour les gars d'aide,

slotishtype