2010-02-17 40 views
1

我需要在後臺上傳GWT文件,即。而不是來自視覺小部件。使用RequestBuilder上傳文件

爲此我找到了RequestBuilder類,但很少有關於如何將其用於上載目的的文檔。

我需要上傳的文件內容是100%純文本。

到目前爲止我的代碼看起來是這樣的:

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(); 
} 

我希望有人可以給我一些指點對解決這個問題,謝謝!

回答

1

我認爲不可能在沒有用戶交互的情況下使用JavaScript將文件上傳到服務器。我認爲它被瀏覽器阻止,因爲這意味着當你訪問一個網站時,任何人都可以從你的系統上傳任何文件,這將是一個主要的安全問題。我不知道你爲什麼想要這樣做,但我想你需要看看另一種方法來嘗試做什麼。

+0

這是不是一個瀏覽器操作,這是從碼頭送到後臺HTTP請求( Java EE應用程序服務器)。 這是完全可行的(因此,爲什麼RequestBuilder首先存在),除了我不知道如何構建正確的格式化請求。 – 2010-02-19 14:02:32

+0

oke我現在迷路了;-)我知道的RequestBuilder是一個GWT客戶端類,它被編譯爲JavaScript,在瀏覽器中運行。所以當你說'上傳'時,你的意思是'從瀏覽器發送到服務器還是其他地方,或者瀏覽器與它無關?並且'你從'Jetty發送給瀏覽器'或者其他地方的'HTTP請求'? – 2010-02-19 14:42:49

0

看來你可以上傳文件與齒輪,所以在最壞的情況下,你可以實現像這樣使用javascript:link text