上传:

jsp:

<body>
<h1>filogin</h1>
<!--如果表单中有文件文件控件,上传的编码必须是multipart/form-data -->
<form action="/strutsFileUpAndDown/login.do" method="post" enctype="multipart/form-data">
name<input id="text" type="text" name="name"/><br/>
file<input id="formFile" type="file" name="formFile"/><br/>
<input type="submit" value="注册"/><br/>
<input type="button" value="1" onclick="test();"/>
</form>
</body> form: /*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.zh.struts.form; import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile; /**
* MyEclipse Struts
* Creation date: 11-11-2013
*
* XDoclet definition:
* @struts.form name="userForm"
*/
public class UserForm extends ActionForm {
private String name;
private FormFile formFile;
public String getName() {
return name;
}
public FormFile getFormFile() {
return formFile;
}
public void setName(String name) {
this.name = name;
}
public void setFormFile(FormFile formFile) {
this.formFile = formFile;
}
} action: /*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.zh.struts.action; import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping; import com.zh.domain.UserName;
import com.zh.service.UserNameService;
import com.zh.struts.form.UserForm;
import com.zh.utils.Tools; /**
* MyEclipse Struts Creation date: 11-11-2013
*
* XDoclet definition:
*
* @struts.action path="/login" name="userForm" scope="request" validate="true"
*/
public class LoginAction extends Action {
/*
* Generated Methods
*/ /**
* Method execute
*
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
String name = userForm.getName();
String fileName = userForm.getFormFile().getFileName(); String filePath = request.getServletContext().getRealPath("/file");
// 要判断文件是否有 .
if (fileName.indexOf(".") == -1) {
// 这里还要返回一个信息回去。
return mapping.findForward("gotoErr");
} String newFileName = Tools.getFileName(fileName);
filePath += "\\" + newFileName; UserName domainUserName = new UserName();
domainUserName.setName(name);
domainUserName.setNewPhoName(newFileName);
domainUserName.setOldPhoName(fileName);
// 调用 UserNameService的函数
UserNameService userNameService = new UserNameService();
if (userNameService.addUser(domainUserName)) {
// 把数据读入文件夹
InputStream inputStream = null;
OutputStream outputStream = null;
try {
inputStream = userForm.getFormFile().getInputStream(); outputStream = new FileOutputStream(filePath); // 做一个缓冲
int len = 0;
byte[] bytes = new byte[1024];
while ((len = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, len);
}
return mapping.findForward("main");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
outputStream.close();
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} else {
return mapping.findForward("gotoErr");
}
return null;
}
} 下载: /*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.zh.struts.action; import java.io.*;
import java.util.LinkedList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.*;
import com.zh.domain.UserName;
import com.zh.service.UserNameService; /**
* MyEclipse Struts
* Creation date: 11-12-2013
*
* XDoclet definition:
* @struts.action validate="true"
*/
public class GotoDownAction extends Action {
/*
* Generated Methods
*/ /**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
String name=request.getParameter("name");
UserNameService userNameService=new UserNameService();
UserName userName=userNameService.getZhuCeList(name); //取出数据的路径
String file=request.getServletContext().getRealPath("/file");
file+="\\"+userName.getNewPhoName(); //设置要下载的信息
String fileOldName=userName.getOldPhoName();
//这里是给中文名字的文件编码
try {
fileOldName=java.net.URLEncoder.encode(fileOldName,"utf-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} //设置响应的信息
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition", "attachment; filename="+fileOldName); //传送数据
InputStream inputStream=null;
OutputStream outputStream=null;
try {
response.setContentType("application/x-download");
inputStream=new FileInputStream(file);
outputStream=response.getOutputStream(); byte[] buffer=new byte[1024];
int len=0;
while((len=inputStream.read(buffer))!=-1){
outputStream.write(buffer, 0, len);
} //注意这里千万不要跳转,会出错 getOutputStream() has already been called for this response
//return mapping.findForward("gotoList");
return null;
} catch (Exception e) {
// TODO Auto-generated catch blocke
//这里是调到 全局Action
return mapping.findForward("gotoErr");
//e.printStackTrace();
}finally{
try {
outputStream.close();
inputStream.close();
} catch (Exception e) {
System.out.println("e");
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

struts的上传和下载的更多相关文章

  1. Java Struts文件上传和下载详解

    Struts2文件上传 Struts 2框架提供了内置支持处理文件上传使用基于HTML表单的文件上传.上传一个文件时,它通常会被存储在一个临时目录中,他们应该由Action类进行处理或移动到一个永久的 ...

  2. struts文件上传和下载

    文件上传 jsp中 <a href="/file/new.action">文件上传案例</a> fileaction中 @Override public S ...

  3. Struts中文件的上传与下载

    前面学到的用组件去上传 前台: 1.post表单提交 2.表单类型 multipart/form-data 3.intput type=file 后台: Apach提供的FileUpload组件 核心 ...

  4. struts 文件上传下载

    上传 1.编写上传action类 UploadAction.java package jxf.b_upload; import java.io.File; import java.io.IOExcep ...

  5. java:struts框架3(自定义拦截器,token令牌,文件上传和下载(单/多))

    1.自定义拦截器: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ...

  6. 【Struts】服务器文件的上传和下载

    Java中获得文件的文件后缀 import java.io.*; public class FileTest{ public static void main(String args[]){ File ...

  7. java web学习总结(二十四) -------------------Servlet文件上传和下载的实现

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...

  8. Struts2入门(七)——Struts2的文件上传和下载

    一.前言 在之前的随笔之中,我们已经了解Java通过上传组件来实现上传和下载,这次我们来了解Struts2的上传和下载. 注意:文件上传时,我们需要将表单提交方式设置为"POST" ...

  9. (转载)JavaWeb学习总结(五十)——文件上传和下载

    源地址:http://www.cnblogs.com/xdp-gacl/p/4200090.html 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传 ...

随机推荐

  1. 技巧:利用 Workflow 显示附近的免费 Wi-Fi

    得益于 Workflow 自 1.5.3 版本起更新的 Get Content of URL 动作,该 App 的潜力得到了极大的提升.本文分享一种有趣的用法,搜寻附近的免费 Wi-Fi 并择一显示在 ...

  2. [麦先生]初学Laravel框架与ThinkPHP的不同(1)

    作为一个PHP菜鸟初学Laravel框架 在学习过程中我发现了其与TP框架的不同点,由于时间问题和认识还不够完善我先写出其中几点,有错误的地方希望各位大牛斧正... 1.渲染模版方式的不同:在Lara ...

  3. Android+Sqlite 实现古诗阅读应用(一)

    不说网络app,很多本地的app都有一些随机的内容推送,比如随机推送一些小知识,古诗,名言名画什么的,界面制作的好看一点就能看起来特别的文艺范, 最近就是看了这样的一些应用,就想自己实现一下,这种方法 ...

  4. 给Testerhome测试小道消息做个硬广告

    测试小道消息在荔枝FM上的粉丝马上就要超过1k了.还差17个我们就能够开通社区了.欢迎大家都来收听测试小道消息哈--更多精彩内容还希望大家下载荔枝fm.关注FM245329. 如果你还不了解测试小道消 ...

  5. redis 一二事 - 设置过期时间,以文件夹形式展示key显示缓存数据

    在使用redis时,有时回存在大量数据的时候,而且分类相同,ID相同 可以使用hset来设置,这样有一个大类和一个小分类和一个value组成 但是hset不能设置过期时间 过期时间只能在set上设置 ...

  6. Jenkins遇到问题三:调整jdk版本不生效的解决办法

    由于项目统一环境的需要,需要将jdk版本从1.7降到1.6,通过修改“系统管理”菜单下的“系统设置”下的jdk环境变量: 将红圈中的路径修改为jdk6,如图所示:保存退出:发现通过”读取设置“和重启j ...

  7. JMeter学习(二十五)HTTP属性管理器HTTP Cookie Manager、HTTP Request Defaults

    Test Plan的配置元件中有一些和HTTP属性相关的元件:HTTP Cache Manager.HTTP Authorization Manager.HTTP Cookie Manager.HTT ...

  8. TestLink学习三:发送邮件的两种配置方法

    第一种:修改config.inc.php中的[smtp],配置为默认本地发送,用hotmail用户做接收,调试成功!(本人未尝试这种) // ----------------------------- ...

  9. 委托--delegate

    委托,跟类很相似,能够定义对象,但是区别是 1,委托必须有关键字delegate. 2,委托有类型修饰符,比如void,string,int.修饰符取决于他的方法返回类型. 3,委托没有方法实现. d ...

  10. requirejs学习之路

    2006年,由于微软的名声比SUN公司的名声要大,选择了asp.net,利用VS开发了很多项目,那个时候觉得自己真是很牛气,什么都能做:现在随着互联网和移动互联的冲击,这些传统技术也受到了冲击,由于A ...