2010-02-17 5 views
1

Je dois télécharger un fichier dans GWT en arrière-plan, c'est-à-dire. pas d'un widget visuel. Pour cela, j'ai trouvé la classe RequestBuilder, mais peu de documentation sur la façon de l'utiliser à des fins de téléchargement.Téléchargement de fichier avec RequestBuilder

Le contenu du fichier que je dois télécharger est 100% en texte brut.

Mon code si loin ressemble à ceci:

final String filename = UUID.randomUUID().toString() + ".txt"; 

RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, "http://localhost/upload"); 
rb.setRequestData(selected.getBody()); // getBody() is plain-text 
rb.setHeader("Content-Type", "application/x-www-form-urlencodeddata"); 
rb.setCallback(new RequestCallback() { 
    @Override 
    public void onResponseReceived(Request request, Response response) { 
     w.setUrl("http://localhost/magic.html?hide=status&open=" + filename); 
     w.show(); 
     w.maximize();        
    } 

    @Override 
    public void onError(Request request, Throwable exception) { 
     exception.printStackTrace(); 
    } 
}); 

// Checked Exceptions sucks *sigh* 
try { 
    rb.send(); 
} 
catch (RequestException e) { 
    e.printStackTrace(); 
} 

J'espère que quelqu'un peut me donner quelques conseils pour résoudre ce problème, merci!

Répondre

1

Je pense qu'il n'est pas possible de télécharger des fichiers sur le serveur sans l'intervention de l'utilisateur en utilisant JavaScript uniquement. Je pense que c'est bloqué par le navigateur, car cela signifierait que n'importe qui pourrait télécharger n'importe quel fichier de votre système lorsque vous visitez un site, ce qui serait un problème de sécurité majeur. Je ne sais pas pourquoi vous voudriez faire ceci, mais je suppose que vous devez regarder une autre approche à ce que vous essayez de faire.

+0

Ce n'est pas une opération de navigateur, il est une requête HTTP de base envoyé à partir d'une jetée (Java EE Application Server). Ce qui est parfaitement réalisable (d'où la raison pour laquelle RequestBuilder existe en premier lieu), sauf que je ne sais pas comment générer la requête de format correct. –

+0

oke Je suis perdu maintenant ;-) Le RequestBuilder que je connais est une classe côté client GWT compilée en JavaScript, qui s'exécute dans le navigateur. Donc, quand vous dites «télécharger», voulez-vous dire «envoyer au serveur depuis le navigateur» ou de l'autre côté, ou le navigateur n'a rien à voir avec tout cela? et avec "demande HTTP envoyée de" vous voulez dire "de la jetée au navigateur" ou l'inverse? –

0

Il semble que vous pouvez télécharger des fichiers avec des engrenages, donc dans le pire des cas, vous pouvez mettre en œuvre quelque chose comme ceci avec javascript: link text