- 浏览: 799592 次
- 性别:
- 来自: 哈尔滨
文章分类
最新评论
-
doloveme:
$sudo cp MONACO_Linux.ttf /usr/ ...
terminator 的配置 -
腾讯rep:
lowser
RSA加密算法c++简单实现 -
csuhanyong:
好YD啊,好YD
一图流:机械键盘各轴区别 -
doloveme:
1。其中:extman ,extmail下载http://ww ...
Ubuntu下安装postfix+extmail邮件服务器 -
doloveme:
repo sync出现“fatal: '../platform ...
Android 编译环境配置搭建(Ubuntu 12.04)及环境导致编译错误QA
我擦,今天搞了许多!
首选弄了个struts的框架,当然是在网上找的。
package org.usc.file; import java.io.File; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import org.apache.struts2.ServletActionContext; public class DownloadAction extends ActionSupport { private static final long serialVersionUID = 6329383258366253255L; private String fileName; private String fileRealName; ActionContext context = ActionContext.getContext(); HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST); HttpServletResponse response = (HttpServletResponse) context.get(ServletActionContext.HTTP_RESPONSE); Map session = context.getSession(); public void setFileName() { // 得到请求下载的文件名 String fname = ServletActionContext.getRequest().getParameter("name"); String frealname = ServletActionContext.getRequest().getParameter("realname"); try { /* * 对fname参数进行UTF-8解码,注意:实际进行UTF-8解码时会使用本地编码,本机为GBK。 * 这里使用request.setCharacterEncoding解码无效. * 只有解码了getDownloadFile()方法才能在下载目录下正确找到请求的文件 */ fname = new String(fname.getBytes("ISO-8859-1"), "UTF-8"); frealname= new String(frealname.getBytes("ISO-8859-1"), "UTF-8"); } catch (Exception e) { e.printStackTrace(); } this.fileName = fname; this.fileRealName = frealname; System.out.println(fileName); System.out.println(fileRealName); } /* * @getFileName 此方法对应的是struts.xml文件中的: <param * name="contentDisposition">attachment;filename="${fileName}"</param> * 这个属性设置的是下载工具下载文件时显示的文件名, 要想正确的显示中文文件名,我们需要对fileName再次编码 * 否则中文名文件将出现乱码,或无法下载的情况 */ public String getFileName() throws UnsupportedEncodingException { fileRealName = new String(fileRealName.getBytes(), "ISO-8859-1"); return fileRealName; } /* * @getDownloadFile 此方法对应的是struts.xml文件中的: <param * name="inputName">downloadFile</param> 返回下载文件的流,可以参看struts2的源码 */ public InputStream getDownloadFile() { this.setFileName(); String path=request.getRealPath("\\"); File file=new File(path+fileName); int fileSize=-1; if(file.exists()){ fileSize=(int) file.length(); System.out.println("文件存在"+file.getPath()+" "+fileSize); }else System.out.println("文件不存在"+file.getPath()); response.setContentLength(fileSize); return ServletActionContext.getServletContext(). getResourceAsStream("/"+"/" + fileName); } @Override public String execute() throws Exception { return SUCCESS; } }
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.multipart.maxSize" value="99999999999" /><!-- 这里设置大于2M的文件上传下载--> <constant name="struts.i18n.encoding" value="utf8" /> <package name="file" namespace="/" extends="struts-default"> <action name="showUpload"> <result>/upload.jsp</result> </action> <action name="upload" class="org.usc.file.UploadAction"> <result name="input">/upload.jsp</result> <!-- <result name="success">/upload_success.jsp</result>--> <result name="success">/download.jsp</result> <interceptor-ref name="fileUpload"> </interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </action> <action name="download" class="org.usc.file.DownloadAction"> <result name="success" type="stream"> <param name="contentDisposition">attachment;filename="${fileName}"</param> <param name="inputName">downloadFile</param> </result> </action> </package> </struts>
首先是要做一个struts版的文件服务器,提供下载用!
然后用一个多线程,断点续传的代码下载这个struts链接,发现我擦,下载不了。
故而debug了半天,发现(红色字体)struts默认的IOoutputstream没有把他传的文件大小写到http报的头上,所以断点续传代码无法获得他的大小,所以无法计算。
后来就行了
2.(紫色字体)String path=request.getRealPath("\\");是得到该jsp文件的根目录
ActionContext context = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);
HttpServletResponse response = (HttpServletResponse) context.get(ServletActionContext.HTTP_RESPONSE);
Map session = context.getSession();
这些是得到环境里的那7个属性
发表评论
-
iOS技术支持
2020-03-06 17:08 265iOS技术支持有问题的可以留言。邮箱地址:huaonline ... -
intellij 打开工程在每个java文件上 有个红色的无效符
2015-07-24 13:52 1707说明该类不是可编译文件。在project Structure中 ... -
springmvc 链接数据库错误
2015-07-09 15:00 1003Caused by: org.xml.sax.SAXPar ... -
ubuntu永久修改主机名
2015-05-05 14:10 779ubuntu永久修改主机名 ... -
ubuntu mysql 配置 远程登陆
2015-03-11 22:37 7581.ubuntu安装 sudo apt-get i ... -
GIT查看、删除、重命名远程分支和TAG
2014-03-04 09:38 5552013-01-09:加入删除远程tag的内容2013-11 ... -
PowerDesigner15在生成SQL時報錯Generation aborted due to errors detected during the ver
2012-08-23 16:32 12431.用PowerDesigner15建模,在Data ... -
NoSQL数据库笔谈<转载>
2011-12-20 17:43 1470<p> </p> <div st ... -
Java性能分析比较:远程调用方法
2011-12-20 09:14 907现在,Java远程调用方法很多,各种方法的优缺点网 ... -
rpc rmi区别
2011-12-19 13:30 13241. RMI和RPC之间最主要的区别在于方法是如何别调用的。 ... -
深入探讨SOAP、RPC和RMI
2011-12-19 13:28 867在 Brett McLaughlin 关于Soapbox ... -
Java RMI与RPC,JMS的比较
2011-12-19 13:28 860远程对象方法调用并不是新概念,远程过程调用 (RPC) ... -
右键打开UE
2011-12-15 13:39 918@echo off echo Windows Regi ... -
xstream
2011-09-07 15:28 990xstream: XStream xst ... -
对比XStream和JSON
2011-09-07 14:29 860XStream是thoughtworks开发的开源产品,采用的 ... -
在Spring中使用XFire构建Web Service应用
2011-08-31 16:25 1060概述 XFire是与Axis 2并列的新一代Web Servi ... -
XFire构建web services客户端的五种方式
2011-08-31 16:15 926本文主要源于先前看到的一篇文章,为了自己以后查看方便也就转 ... -
XFire 最新生火指南(上)
2011-08-31 15:51 844基于发布在JavaEye的敬畏心情,本文又修改了一遍,与前 ... -
XFire 最新生火指南(下)
2011-08-31 15:49 10031. JSR181 JSR181式通过annotated ... -
xfire生成webservice客户端与服务注意事项
2011-08-30 17:32 15531.从Bean生成ws,要注意如果用了XmlB ...
相关推荐
BGInfo能将电脑相关资讯整合到桌布上(ServerName,IP Address, Disk Info,...)配和工作排程可以实现定时刷新。个人觉得在HelpDesk特别适用。
系统桌面-RELEASE-4.26.3.4214-123117.apk
qzone4.26
ue4 4.26,http请求插件
sssssssssssssss
eclipse 4.26.0
官网下载了好久下不了,这个是从网上找到的,4.26版本的,里面一共有三个版本的,windows,mac,linux
强 有 力 地 网 络 工 具 , 你 的 懂 得 哈
这个资源找了很久,现在官方都升级到六点几的版本了,想要老版本的童鞋要抓紧下载了,老版本的工程用新的版本软件无法打开,很是难受。
ArcGIS API for JavaScript 是一种用于在网页上创建地图应用的开发库。如果您想使用本地资源而不是在线资源,您需要确保本地服务器已经设置好,并且所有的资源(包括 JavaScript 库、CSS 文件、图片等)都可以通过...
4.26 实验作业 已完成
当前ArcGIS API for JavaScript三维地图开发最新版本为4.26,该资源为最新版本( sdk开发包)。
STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用。STM32CubeMX几乎覆盖了STM32 全系列芯片。它具有如下特性...
您可以自己定义规则生效的时间范围,以便在正常工作时间和下班业余时间指派不同的控制规则,达到更加人性化管理。 日流量统计 P2P终结者可以对每个被控主机统计日流量,并显示在主机列表中显示;你还可以对历史日...
UE4虚幻引擎与前端Web页面融合的插件,含使用文档说明。
官方版本,包含Windows,MacOS,Linux跨平台。 ST官方下载速度较慢,特此上传分享。官方迭代很快,但可以在线升级。
4.26绘画活动照片.zip
其它考试-2017年吉林教师资格考试每日一练(4.26).docx
p2pover4.26