当前位置: 首页 > 知识库问答 >
问题:

GWT:如何实现文件下载

简成仁
2023-03-14

我是GWT和一般Web应用程序的新手。

我正在制作一个GWT web应用程序。它提供的一个功能是通过单击网页上的按钮下载文件。不幸的是,文件本身并不是物理上位于服务器端。服务器端需要通过对另一个web服务的REST调用来获取文件的InputStream。

我的问题是:

  1. 如何将流传递到客户端,以便浏览器可以开始下载?
  2. 在开始之前,我必须在服务器上物理写入文件吗?

非常感谢

编辑:我找到了这个例子:使用Servlet下载文件时如何使用GWT?

在本例中,文件物理上位于服务器端。我通过流从web服务获得的文件非常大,我不想将它们保存在我的GWT服务器端。有什么建议吗?

共有2个答案

白青青
2023-03-14

将inputstream转换为首选格式并创建临时文件

File f = File.createTempFile("tmp", "yourformat(.txt)", new File("C:/"));



 // deletes file when the virtual machine terminate
 f.deleteOnExit();

创建临时文件以加载用户,并在退出时自动删除。

水焱
2023-03-14

我们使用如上示例所示的servlet。只需确保将标题和文件名设置为适当的类型。(文件名必须以正确的结尾结束)

// process the data (In your case go get it)
byte[] data = generateReturnBuffer();
// do not cache
response.setHeader("Expires", "0");  
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");  
response.setHeader("Pragma", "public");
// content length is needed for MSIE
response.setContentLength(data.length);
// set the filename and the type
response.setContentType("application/pdf");  
response.addHeader("Content-Disposition", "attachment;filename=" + "fileName.pdf");  
ServletOutputStream out = resp.getOutputStream();
out.write(data);
out.flush();

其中,响应是servlet HttpServletResponse<请在此处查找有效的mime类型
由于某些版本的internet explorer需要文件长度,因此有时您需要将数据存储在文件或内存中。

 类似资料:
  • 问题内容: 我正在创建一个简单的项目,使我可以使用gwt上传和下载文件。我在下载服务器上的文件时遇到了麻烦。 对于文件上传,我使用了http://code.google.com/p/gwtupload/并按照那里的说明进行操作。我的文件存储在网站容器外部的服务器上(在硬盘上), 现在,当涉及到文件下载时,我希望用户按下下载按钮,并且当前选择的任何项目都将下载。我真的不知道该怎么做 我知道我需要下载

  • 在Vue项目实现文件下载的时候遇到一个问题,无论是使用a标签还是使用windown.open(url)都只会在网页打开预览,但是都不能下载,请问这是什么问题?应该如何去避免从而实现下载功能呢?查了好久资料,来来去去都是那一片文章抄来抄去,实在让人难受!!!这些粘贴怪真恶心!!!

  • 本文向大家介绍JavaEE实现文件下载,包括了JavaEE实现文件下载的使用技巧和注意事项,需要的朋友参考一下  我们先来看一个最简单的文件下载的例子:  该段代码的功能是从服务器端下载图片1.png。目录结构用MyEclipse的package explorer显示如下:   让我们增加一点难度,我们要下载的文件是一个中文名字的文件。由于在http协议中头文件中的东西只能是ASCII字符,因而通

  • 本文向大家介绍linux下如何实现快速拷贝大文件,包括了linux下如何实现快速拷贝大文件的使用技巧和注意事项,需要的朋友参考一下 拷贝数据 远程拷贝数据的时候,我们一般使用rsync命令,但是如果拷贝大量的小文件,会导致rsync的传输速度慢。使用tar pv lz4打包压缩传输,可以解决这问题,使用这个方法,等同于使用scp、rsync传输大文件。 实测,使用rsync传输1200G,单个文件

  • 本文向大家介绍SpringMVC实现文件下载功能,包括了SpringMVC实现文件下载功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了SpringMVC文件下载的具体代码,供大家参考,具体内容如下 两个案例   1.为登录用户提供下载服务。   2.阻止仅通过输入网址即可获取下载。 文件下载概览   为了将文件发送给浏览器,我们需要在控制器中完成以下操作: 对请求处理方法使用vo

  • 本文向大家介绍vue+axios实现post文件下载,包括了vue+axios实现post文件下载的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了vue+axios实现post文件下载的具体代码,供大家参考,具体内容如下 功能:点击导出按钮,提交请求,下载excel文件; 这里是axios的post方法。get方法请点击这里=》here  第一步:跟后端童鞋确认交付的接口的respo