gwt - 使用具有大量数据的 post 请求调用 servlet 并在新选项卡中打开 url

标签 gwt servlets canvas

这个问题在这里已经有了答案:





Is it possible to download a file from server to my device having MGWT&GwtPhoneGap app?

(2 个回答)


7年前关闭。




我正在使用 gwt canvas 。

我有 74kb 的字符串(图像)数据,我想将其传递给 servlet。以便 servlet 处理该数据并将内容发送到浏览器。这样它会提示用户下载它。

从客户端,我使用 RequestBuilder 调用 servlet,将请求数据设置给它,数据很大,所以我使用 post 请求。它正在击中 servlet,也在浏览器上抛出内容,但不显示任何下载内容。

当前 url 有 Canvas 。我认为这就是为什么它没有下载任何东西这个结论是因为如果我直接使用 http://localhost:8080/servlet 打开那个 servlet然后它下载它的属性(在这种情况下,我没有证明来自客户端的任何内容)但是对于具有 Canvas 的 url 其给出问题。

那么有什么方法可以在新选项卡中打开一个 url,并且可以使用 gwt 中的 post 请求调用 servlet。

最佳答案

您可以使用表单面板进行上传,表单面板将使用隐藏的 iframe,

FormPanel form = new FormPanel();
form.setMethod(FormPanel.METHOD_POST);
form.setAction("/downloadServlet");
FlowPanel hiddenPanel = new FlowPanel();
hiddenPanel.add(new Hidden("name1", "value"));
hiddenPanel.add(new Hidden("name2", "value"));
form.setWidget(hiddenPanel);
RootPanel.get().add(form);
form.submit();

如果您放置了正确的 header ,则 servlet 返回的内容将由用户导航器下载。
public class ServletDownloadDemo extends HttpServlet{

  private static final int BYTES_DOWNLOAD = 1024;

  @Override
  public void doPost(HttpServletRequest request, 
   HttpServletResponse response) throws IOException{
    //Get Parameters
    String name1 = request.getParameter("name1");
    String name2 = request.getParameter("name2");

    response.setContentType("text/plain");
    response.setHeader("Content-Disposition",
                     "attachment;filename=downloadname.txt");
    ServletContext ctx = getServletContext();
    InputStream is = ctx.getResourceAsStream("/testing.txt");

    int read=0;
    byte[] bytes = new byte[BYTES_DOWNLOAD];
    OutputStream os = response.getOutputStream();

    while((read = is.read(bytes))!= -1){
        os.write(bytes, 0, read);
    }
    os.flush();
    os.close(); 
   }
}

关于gwt - 使用具有大量数据的 post 请求调用 servlet 并在新选项卡中打开 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18998393/

相关文章:

gwt - 您如何使用 GWT 的 SimpleEventBus 或 EventBus?

java - GWT:如果未登录应用程序,静态 HTML 页面应重定向到 login.html

javascript - 我可以将从 Canvas 上下文创建的渐变应用到其他 Canvas 上下文吗?

javascript - 如何检测点击后鼠标按钮是否被按住一定时间

javascript - 加载网页后如何触发javascript函数(不使用表单和提交按钮)

javascript - 获取一个点从另一个点旋转一定距离的X和Y

java - 如何从 GWT 中的 JSNI 方法调用 JSNI 方法

java - 如何在 GWT 中将自定义 HTML 元素注册为小部件

android - 应该使用什么 header 将 GZIP 压缩 JSON 从 Android 客户端发送到服务器?

java - 如何用 Headers 模拟 HttpServletRequest?