我需要读取位于服务器上的文件,但我发现在GWT中不可能使用一些java库。 我该怎么做?
答案 0 :(得分:3)
尝试 requestBuilder !!这段代码可以帮忙吗?
RequestBuilder requestBuilder = new RequestBuilder( RequestBuilder.GET, "yourfile.txt" );
try {
requestBuilder.sendRequest( null, new RequestCallback(){
public void onError(Request request, Throwable exception) {
GWT.log( "failed file reading", exception );
}
public void onResponseReceived(Request request, Response response) {
String result=response.getText();
}} );
} catch (RequestException e) {
GWT.log( "failed file reading", e );
}
答案 1 :(得分:1)
规则:JavaScript无法从没有与运行JavaScript的页面匹配的主机名和端口的URL中读取数据。
换句话说:如果它位于不同的站点上 - 你不能直接用JS读取它,因此不能直接用GWT读取它,它只是编译后的Javascript。
它适用于来自XMLHttpRequest,框架以及您需要注意的任何其他内容的数据。
This may change in the future, but for now the rule stands.
考虑到这一点,有几个解决方法。
1)使用RPC或任何机制调用服务器,让服务器执行请求,然后将其发送回客户端。 Here is a sample
3)如果你只使用Firefox和Firefox,看起来Firefox有能力这样做,但你需要手动启用它。
答案 2 :(得分:0)
首先只需编写一个servlet,将位于服务器上的文件发送给用户。
然后,当用户点击某个按钮时,您可以使用正确的参数调用该servlet。
以下是我们的servlet实现的摘录
response.reset();
response.setContentType("application/octet-stream");
response.setContentLength(contentLength);
response.setHeader("Content-disposition", "attachment;
filename=\"" + filename + "\"");
output = new
BufferedOutputStream(response.getOutputStream());
int data = input.read();
while (data != -1)
{
output.write(data);
data = input.read();
}
output.flush();