`

Struts2 - Https中IE浏览器不能下载的问题

 
阅读更多

在http中能下载,但是启用https协议后下载报错问题结果,在谷歌,火狐浏览器正常

具体操作如下:

// 获取下载文件
		//userRegisterInfoPath  下载路径
                File downloadFile = new File(userRegisterInfoPath);
		FileInputStream fos = new FileInputStream(downloadFile);
		byte[] bytes = new byte[4096];
		int read = 0;
		response.reset();
		response.setContentType("application/octet-stream;charset=UTF-8");
                //filename 是带扩展名
		response.setHeader("Content-Disposition","attachment; filename="+ URLEncoder.encode("申请表.pdf", "utf-8"));
		response.setHeader("Pragma", "public");
                //下载设置的关键项
		response.setHeader("Cache-Control","public");  
		ServletOutputStream  sos =  response.getOutputStream();
		while((read=fos.read(bytes))!=-1){
		    sos.write(bytes, 0, read);
		}
		sos.flush();
		sos.close();
		   

 

 文件上传转载的一片好文:

作者:http://www.blogjava.net/leekiang/archive/2007/08/27/139844.html

片段代码

<form action="" method="post" enctype="multipart/form-data">
 最大上传2G.
通过 http 协议上传文件(rfc1867协议概述,jsp 应用举例,客户端发送内容构造)
 服务器接收到上传的流,自己其实是不作任何处理的,那个request还是原装的,谁来处理这个request呢,一般采用第三方的工具,这里以commons fileupload为例.
 

DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096);// 设置缓冲,这个值决定了是fileinputstream还是bytearrayinputstream
factory.setRepository(new File("d:\\temp"));//设置临时存放目录,默认是new File(System.getProperty("java.io.tmpdir"))
ServletFileUpload sfu = new ServletFileUpload(factory);
sfu.setSizeMax(100*1024*1024);//100M
List items = sfu.parseRequest(request);//传入的这个request还是原装的

 见上面的代码,commons fielupload通过ServletFileUpload类的parseRequest(request)方法处理这个原始流。而ServletFileUpload又会调用其爷爷类FileUploadBase的parseRequest(request)方法,然后又会调return parseRequest(new ServletRequestContext(request)),代码如下

 

 

上传代码springboot

@PostMapping(value="/szjrb/upLoadReportXmlFile")
public RestModel upLoadReportXmlFile(MultipartHttpServletRequest multiReq,String xmlFilePath) throws IOException{

    FileOutputStream fos = null;
    FileInputStream fis = null;
    try{
        if(StringUtils.isBlank(xmlFilePath)){
            return new RestModel("10006","xmlFilePath参数不能为空");
        }

        File file = new File(xmlFilePath);
        if(!file.isFile()){
            return new RestModel("10007","xmlFilePath不是文件路径");
        }

        //上传
fos=new FileOutputStream(new File(xmlFilePath));
        fis=(FileInputStream) multiReq.getFile("file").getInputStream();
        byte[] buffer=new byte[1024];
        int len=0;
        while((len=fis.read(buffer))!=-1){
            fos.write(buffer, 0, len);
        }
    }catch (Exception e){
        logger.error(e.getMessage(),e);
        return new RestModel("0","上传失败",xmlFilePath);
    }finally {
        fos.close();
        fis.close();
    }
    return new RestModel(RestModel.CODE_SUCCESS,RestModel.MESSAGE_SUCCESS,xmlFilePath);
}

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    struts2.0官方项目之四(showcase)

    在IE浏览器中输入: http://localhost:8080/struts2-mailreader-2.0.9.war&lt;br&gt;&lt;br&gt; 恭喜,运行成功! &lt;br&gt; ------------------------------------------------ 除了Tomcat外,当然使用其他的服务器也...

    struts2.0官方项目之三(portlet)

    在IE浏览器中输入: http://localhost:8080/struts2-mailreader-2.0.9.war&lt;br&gt;&lt;br&gt; 恭喜,运行成功! &lt;br&gt; ------------------------------------------------ 除了Tomcat外,当然使用其他的服务器也...

    奇怪的struts2的中文乱码问题及解决.docx

    然而,这个问题的特殊之处在于,它只在IE浏览器中出现,而在Firefox(FF)和Chrome浏览器中正常显示,这就排除了编码设置不正确的原因。 进一步分析发现,问题可能与浏览器对Ajax请求的处理有关。IE浏览器在处理...

    Struts2文件上传下载 中文乱码

    对于中文文件名,可以使用`URLEncoder.encode(fileName, "UTF-8")`,并考虑到IE浏览器的特殊处理,可能需要进一步转换为`new String(URLEncoder.encode(fileName, "UTF-8").getBytes("ISO-8859-1"), "ISO-8859-1")`...

    struts2.0官方项目之一(blank)

    在IE浏览器中输入: http://localhost:8080/struts2-mailreader-2.0.9.war&lt;br&gt;&lt;br&gt; 恭喜,运行成功! &lt;br&gt; ------------------------------------------------ 除了Tomcat外,当然使用其他的服务器也...

    Struts2 下载文件不同浏览器兼容问题.doc

    在Struts2框架中,开发Web应用时可能会遇到一个常见的问题,那就是下载文件时不同浏览器的兼容性问题。这个问题主要体现在文件下载时显示的文件名不是预期的文件名,而是action的名字。这个问题的根源在于各个浏览器...

    struts2 annotation 文件下载

    // 注释部分为兼容IE浏览器的编码方式 // downFileName = java.net.URLEncoder.encode(tempFileName, "UTF-8"); downFileName = new String(tempFileName.getBytes(), "ISO8859-1"); return downFileName; } ...

    关于struts2里用javascript刷新window.showModalDialog的父页面

    `window.showModalDialog`是IE浏览器提供的一个方法,用于弹出一个模态对话框。模态对话框的特点是在该对话框未关闭之前,其他窗口或页面无法获得焦点,从而确保用户的注意力集中在当前对话框上。 #### 实现细节 ...

    Struts2类型转换与输入校验 .zip

     已经接入局域网的网络实验室,机器上装有IE浏览器等;  strtus2.5.8  实验内容: (1) 编写一个自定义类型转换器,并基于应用程序进行全局配置,实现字符串参数与颜色值之间的转换,并将颜色值应用于视图...

    个人信息管理系统Struts2 spring hibernate dwr

    采用了FCKeditor在线文本编辑器,用FCKeditor上传文件时还存在有问题,不知道是不是配置存在问题,但是图片文件利用Struts2的action上传到服务器,因为有其他附件文件要上传,并且要保存文件信息,在删除文章时要把...

    个人知识管理系统 Struts2.0 + Spring + Hibernate

    由于对页面样式了解不多,所以写出来的样式目前只在IE上运行良好,在火狐上效果不佳,并且在火狐上提示复习这一块一直出不来,目前也在研究CSS,希望能写出适合大多数浏览器的样式。 用户可建立自己的知识分类,...

    个人知识管理系统 Struts2 + Spring + Hibernate

    采用了FCKeditor在线文本编辑器,用FCKeditor上传文件时还存在有问题,不知道是不是配置存在问题,但是图片文件利用Struts2的action上传到服务器,因为有其他附件文件要上传,并且要保存文件信息,在删除文章时要把...

    解决struts组件上传附件速度很慢的问题

    3. **升级浏览器**:鼓励用户升级到更现代的浏览器,如IE7及以上版本或使用非IE浏览器,以获得更好的文件上传性能。 4. **使用第三方上传组件**:有许多第三方的文件上传插件和库,如Plupload、FineUploader等,...

    Struts2漏洞已成高校网络安全顽疾 建议学校加大信息系统巡查力度.pdf

    该漏洞影响微软多个产品,包括IE浏览器、Windows操作系统、Office办公软件、Adobe Flash播放器等。攻击者可以利用该漏洞远程执行代码,从而对受影响的系统进行破坏。这一漏洞的利用通常涉及到诱使用户点击含有恶意...

    基于struts2+spring+mybatis+uploadify的多文件上传

    【描述】提到的"在IE浏览器可以正常运行"表明该项目兼容老版本的Internet Explorer,这在当时是相当重要的,因为许多企业还在使用这个浏览器。"点击开始上传下面的白色区域,进行上传"说明了用户界面中的上传触发...

    struts、hibernate新闻系统

    在描述中提到,该新闻系统在IE浏览器上显示效果不佳,这可能是由于浏览器兼容性问题。在Web开发中,不同的浏览器可能对CSS、JavaScript等前端技术的解析和执行存在差异,因此需要考虑多浏览器兼容性,通常通过使用...

    java httpServletResponse返回流进行 下载 - 姐呵呵博客专栏 - CSDN博客1

    // 处理IE浏览器的逻辑 } ``` 四、异常处理 在实际应用中,应该添加适当的错误处理,例如文件不存在或读取失败时抛出异常,并向客户端返回合适的错误信息。 五、性能优化 为了提高性能,可以考虑使用多线程下载大...

    TQEditor项目示例,demo

    通过这个“TQEditor项目示例,demo”,开发者可以学习到如何将TQEditor编辑器与Struts2框架无缝结合,实现在Web应用中的文本编辑功能,同时了解如何处理用户交互、文件上传等常见问题。这不仅有助于提升项目的用户...

    一次性选择多文件上传multiple属性

    在IT行业中,文件上传是网页应用中常见的功能之一,特别是在数据交换、文件分享以及文档管理等领域。"一次性选择多文件上传multiple属性"是HTML5引入的一个特性,它极大地提升了用户体验,允许用户在单个文件输入框...

    办公自动化系统(Struts+Hibernate+Spring)

    这个项目是基于MySQL数据库、MyEclipse开发环境以及IE浏览器运行的。 首先,Struts作为MVC架构的一部分,主要负责控制层的工作。它通过Action类处理用户的请求,并将请求转发到相应的业务逻辑组件。Struts框架提供...

Global site tag (gtag.js) - Google Analytics