我正在尝试在Struts Action类中下载PDF文件.

问题是使用

response.setHeader("Content-Disposition", "attachment;filename=file.pdf");

我想打开“保存/打开”框,但现在PDF内容在浏览器中写入:

恩.

%PDF-1.4 28 0 obj << /Type /XObject /Subtype /Image /Filter /DCTDecode /Length 7746 /Width 200 /Height 123 /BitsPerComponent 8 /ColorSpace /DeviceRGB >>...(cut)

我在Chrome,Firefox和IE下尝试了这个代码(下面),到处都是这样.我也使用不同的PDF文件.

我的代码片段:

try {

URL fileUrl = new URL("file:///" + filePath);

URLConnection connection = fileUrl.openConnection();

inputStream = connection.getInputStream();

int fileLength = connection.getContentLength();

byte[] outputStreamBytes = new byte[100000];

response.setContentType("application/pdf");

response.setHeader("Content-Disposition", "attachment;filename=file.pdf");

response.setContentLength(fileLength);

outputStream = response.getOutputStream();

int iR;

while ((iR = inputStream.read(outputStreamBytes)) > 0) {

outputStream.write(outputStreamBytes, 0, iR);

}

return null;

} catch (MalformedURLException e) {

logger.debug("service", "An error occured while creating URL object for url: "

+ filePath);

response.sendError(HttpServletResponse.SC_NOT_FOUND);

return null;

} catch (IOException e) {

logger.debug("service", "An error occured while opening connection for url: "

+ filePath);

response.sendError(HttpServletResponse.SC_NOT_FOUND);

return null;

} finally {

if (outputStream != null) {

outputStream.close();

}

if (inputStream != null) {

inputStream.close();

}

inputStream.close();

}

return null;

还缺少什么?

编辑

当我在Struts类中使用此代码时,它不起作用,但是当我在Servlet中使用此代码时,它正在工作.

最奇怪的是,当我在动作类中只将“response.sendRedirect()”写入Servlet(并且所有逻辑都在Servlet中)时,它也不起作用.

当我分析响应头时,这三个例子中的所有内容都是相同的.

java获取content-disposition_java – Content-Disposition附件不起作用 – 将...相关推荐

  1. android 字符串调用方法名,尝试在空对象引用上调用虚拟方法'java.lang.String android.content.Context.getPackageName()'...

    在其中一个片段中,有一个RecyclerView带有自定义适配器,并且单击其中一个项目将转到另一个页面,该页面是相同Activity的新实例.但是,某些行为会在我的应用程序中导致错误. 从我的活动中, ...

  2. Android异常总结---1.异常原因: java.lang.IllegalArgumentException: URI: content://com.android.contacts/con

    1.异常原因: java.lang.IllegalArgumentException: URI: content://com.android.contacts/contacts1/data, call ...

  3. 项目销毁主页Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService异常

    项目需求,项目退出登录的时候,跳转登录页面,重新登录,会重新进入首页.很简单的需求,只需在退出的时候将存储的用户信息销毁,把之前活跃的activity销毁,重新跳转进入登录界面即可.但是在真正执行退出 ...

  4. 解决java.lang.IllegalStateException: The content of the adapter has changed but ListView...的问题

    我写了一个Dialog,Dialog中有一个ListView,想要点ListView中的一项后,跳转到另外一个Activity去. 但在使用时,会偶尔报出下面的错误: 02-21 14:54:28.9 ...

  5. 解决MediaPlayer: Couldn't open /storage/emulated:java.io.FileNotFoundException: No content provider问题

    项目中用到了MediaPlayer播放本地视频文件的功能,遇到了一个很奇葩的问题,在4.0的设备上可以完美播放,但是在7.0的设备上死活播放不了,一直报如下错误 错误信息里出现了这几个字眼" ...

  6. Java实现发送邮件带多个附件,可以直接用

    需求: 使用JavaMail发送邮件,要求实现带多个附件功能. 下面代码可以直接使用,也可以按需优化,实现的功能如下: 自定义输出debug信息. 自定义开启SSL认证. *QQ邮箱会自动检测开启,也 ...

  7. 小程序websocket java_微信小程序websocket java获取不到data

    在使用java作为后台测试微信小程序时,发现: 1.后台中ServerHttpRequest request中的session是空的,前端通过wx.connectSocket传递的data也没看到. ...

  8. 通过JAVA获取优酷、土豆、酷6、6间房等视频

    为什么80%的码农都做不了架构师?>>>    通过JAVA获取优酷.土豆.酷6.6间房.56视频,现在很多社会网站都有这个功能,用户输入优酷.土豆.酷6.6间房.56视频地址后,能 ...

  9. 分析界面,在全国公共资源交易平台使用java获取全国的招投标数据接口

    任务:获取全国的建筑招投标数据信息,并打开界面获取详情页抓取html保存至本地. 打开网址地址,进行网页分析. 2.获取省市区联动,在控制台并没有发现任何往后台获取省市区联动的信息,怀疑是在js里写死 ...

  10. JAVA获取优酷、土豆、酷6等视频实例

    通过JAVA获取优酷.土豆.酷6.6间房.56视频,现在很多社会网站都有这个功能,用户输入优酷.土豆.酷6.6间房.56视频地址后,能找到对应的视频及视频的缩略图,有些社区网站还能获取到视频的时长. ...

最新文章

  1. 英伟达TensorRT 8-bit Inference推理
  2. ccf压缩编码java_压缩编码(CCF)——动态规划
  3. Microbiome:animalcules-交互式微生物组分析和可视化的R包
  4. HTTP GET URL的最大长度
  5. django Cookie,Session和自定义分页
  6. PD003-NET通用后台系统
  7. 业务决定功能,功能决定技术
  8. Web内核微信小程序框架实践
  9. Mysql:语法:虚拟表DUAL
  10. MySql数据的启动和停止以及SQLyog图形化工具的下载
  11. 图卷积网络详细介绍(二)
  12. linux下查看表类型注释命令@tcc
  13. 雪亮工程整体解决方案
  14. 【解决方案 六】---在VS2015里使用ILDasm
  15. 重庆python爬虫培训_PYTHON爬虫工程师
  16. python爬虫常用模块介绍_python爬虫常用的模块分析
  17. python除法运算定律_小数乘法和小数除法知识点整理(转)
  18. 还在用git commit -m 吗?Git 提交规范和自动产生changelog手摸手教程。
  19. 模拟手机端来爬取数据
  20. java数据之头尾链表

热门文章

  1. Exchange 发送方式(Send As)和代表发送(Send on behalf)的区别
  2. Nginx 笔记与总结(15)nginx 实现反向代理 ( nginx + apache 动静分离)
  3. 字符设备驱动笔记(一)
  4. 如何实现网络负荷分担
  5. SDN控制器的资源收集过程—Vecloud
  6. Day15模块(导入,使用)
  7. .NET MongoDB Driver 2.2使用示例
  8. python-django-ORM,常用查询方式
  9. 由几道JS笔试题引发的知识点探究
  10. leetcode 122. 买卖股票的最佳时机 II