在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还是原装的
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); }
相关推荐
在IE浏览器中输入: http://localhost:8080/struts2-mailreader-2.0.9.war<br><br> 恭喜,运行成功! <br> ------------------------------------------------ 除了Tomcat外,当然使用其他的服务器也...
在IE浏览器中输入: http://localhost:8080/struts2-mailreader-2.0.9.war<br><br> 恭喜,运行成功! <br> ------------------------------------------------ 除了Tomcat外,当然使用其他的服务器也...
然而,这个问题的特殊之处在于,它只在IE浏览器中出现,而在Firefox(FF)和Chrome浏览器中正常显示,这就排除了编码设置不正确的原因。 进一步分析发现,问题可能与浏览器对Ajax请求的处理有关。IE浏览器在处理...
对于中文文件名,可以使用`URLEncoder.encode(fileName, "UTF-8")`,并考虑到IE浏览器的特殊处理,可能需要进一步转换为`new String(URLEncoder.encode(fileName, "UTF-8").getBytes("ISO-8859-1"), "ISO-8859-1")`...
在IE浏览器中输入: http://localhost:8080/struts2-mailreader-2.0.9.war<br><br> 恭喜,运行成功! <br> ------------------------------------------------ 除了Tomcat外,当然使用其他的服务器也...
在Struts2框架中,开发Web应用时可能会遇到一个常见的问题,那就是下载文件时不同浏览器的兼容性问题。这个问题主要体现在文件下载时显示的文件名不是预期的文件名,而是action的名字。这个问题的根源在于各个浏览器...
// 注释部分为兼容IE浏览器的编码方式 // downFileName = java.net.URLEncoder.encode(tempFileName, "UTF-8"); downFileName = new String(tempFileName.getBytes(), "ISO8859-1"); return downFileName; } ...
`window.showModalDialog`是IE浏览器提供的一个方法,用于弹出一个模态对话框。模态对话框的特点是在该对话框未关闭之前,其他窗口或页面无法获得焦点,从而确保用户的注意力集中在当前对话框上。 #### 实现细节 ...
已经接入局域网的网络实验室,机器上装有IE浏览器等; strtus2.5.8 实验内容: (1) 编写一个自定义类型转换器,并基于应用程序进行全局配置,实现字符串参数与颜色值之间的转换,并将颜色值应用于视图...
采用了FCKeditor在线文本编辑器,用FCKeditor上传文件时还存在有问题,不知道是不是配置存在问题,但是图片文件利用Struts2的action上传到服务器,因为有其他附件文件要上传,并且要保存文件信息,在删除文章时要把...
由于对页面样式了解不多,所以写出来的样式目前只在IE上运行良好,在火狐上效果不佳,并且在火狐上提示复习这一块一直出不来,目前也在研究CSS,希望能写出适合大多数浏览器的样式。 用户可建立自己的知识分类,...
采用了FCKeditor在线文本编辑器,用FCKeditor上传文件时还存在有问题,不知道是不是配置存在问题,但是图片文件利用Struts2的action上传到服务器,因为有其他附件文件要上传,并且要保存文件信息,在删除文章时要把...
3. **升级浏览器**:鼓励用户升级到更现代的浏览器,如IE7及以上版本或使用非IE浏览器,以获得更好的文件上传性能。 4. **使用第三方上传组件**:有许多第三方的文件上传插件和库,如Plupload、FineUploader等,...
该漏洞影响微软多个产品,包括IE浏览器、Windows操作系统、Office办公软件、Adobe Flash播放器等。攻击者可以利用该漏洞远程执行代码,从而对受影响的系统进行破坏。这一漏洞的利用通常涉及到诱使用户点击含有恶意...
【描述】提到的"在IE浏览器可以正常运行"表明该项目兼容老版本的Internet Explorer,这在当时是相当重要的,因为许多企业还在使用这个浏览器。"点击开始上传下面的白色区域,进行上传"说明了用户界面中的上传触发...
在描述中提到,该新闻系统在IE浏览器上显示效果不佳,这可能是由于浏览器兼容性问题。在Web开发中,不同的浏览器可能对CSS、JavaScript等前端技术的解析和执行存在差异,因此需要考虑多浏览器兼容性,通常通过使用...
// 处理IE浏览器的逻辑 } ``` 四、异常处理 在实际应用中,应该添加适当的错误处理,例如文件不存在或读取失败时抛出异常,并向客户端返回合适的错误信息。 五、性能优化 为了提高性能,可以考虑使用多线程下载大...
通过这个“TQEditor项目示例,demo”,开发者可以学习到如何将TQEditor编辑器与Struts2框架无缝结合,实现在Web应用中的文本编辑功能,同时了解如何处理用户交互、文件上传等常见问题。这不仅有助于提升项目的用户...
在IT行业中,文件上传是网页应用中常见的功能之一,特别是在数据交换、文件分享以及文档管理等领域。"一次性选择多文件上传multiple属性"是HTML5引入的一个特性,它极大地提升了用户体验,允许用户在单个文件输入框...
这个项目是基于MySQL数据库、MyEclipse开发环境以及IE浏览器运行的。 首先,Struts作为MVC架构的一部分,主要负责控制层的工作。它通过Action类处理用户的请求,并将请求转发到相应的业务逻辑组件。Struts框架提供...