web文件上传【经典】

原创 2012年03月26日 22:52:09
package com.chinasoft.action;


import java.util.Map;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.interceptor.SessionAware;


import com.opensymphony.xwork2.ActionSupport;


public class CommonAction  extends ActionSupport implements ServletResponseAware,
ServletRequestAware, SessionAware, RequestAware {


private HttpServletRequest request;
private HttpServletResponse response;
private HttpSession session;
@SuppressWarnings("unchecked")
private Map requestmap;
@SuppressWarnings("unchecked")
private Map sessionmap;


public HttpServletRequest getRequest() {
return request;
}


public void setRequest(HttpServletRequest request) {
this.request = request;
}


public HttpServletResponse getResponse() {
return response;
}


public void setResponse(HttpServletResponse response) {
this.response = response;
}


@SuppressWarnings("unchecked")
public Map getRequestmap() {
return requestmap;
}


@SuppressWarnings("unchecked")
public void setRequestmap(Map requestmap) {
this.requestmap = requestmap;
}


@SuppressWarnings("unchecked")
public Map getSessionmap() {
return sessionmap;
}


@SuppressWarnings("unchecked")
public void setSessionmap(Map sessionmap) {
this.sessionmap = sessionmap;
}


public HttpSession getSession() {
return session;
}


public void setSession(HttpSession session) {
this.session = session;
}


public void setServletResponse(HttpServletResponse arg0) {
this.response = arg0;
}


public void setServletRequest(HttpServletRequest arg0) {
this.request = arg0;
this.session = request.getSession();
}


@SuppressWarnings("unchecked")
public void setSession(Map arg0) {
this.sessionmap = arg0;
}


@SuppressWarnings("unchecked")
public void setRequest(Map arg0) {
this.requestmap = arg0;
}


}





package com.chinasoft.action;


import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;


import org.apache.struts2.ServletActionContext;


import com.chinasoft.db.UFile;
import com.opensymphony.xwork2.ActionSupport;


@SuppressWarnings("serial")
public class DownloadAction extends ActionSupport {


private String fileName;// 现在文件名称fileName


private String filepath;// 下载文件路径


private List<UFile> ufileList = new ArrayList<UFile>();


public List<UFile> getUfileList() {
return ufileList;
}


public void setUfileList(List<UFile> ufileList) {
this.ufileList = ufileList;
}






public String getFileName() {
return fileName;
}


public void setFileName(String fileName) {
this.fileName = fileName;
}


public String getFilepath() {
return filepath;
}


public void setFilepath(String filepath) {
this.filepath = filepath;
}


public String allFile() {
String downpathString = ServletActionContext.getServletContext()
.getRealPath(filepath);
File file = new File(downpathString);
File[] fs = file.listFiles();
for (File f : fs) {
UFile uFile = new UFile();
uFile.setName(f.getName());
uFile.setSize(f.length());
ufileList.add(uFile);
}


return "success";
}



public InputStream getInputStream(){
try {
String downName=new String(fileName.getBytes("8859_1"),"UTF-8");
return ServletActionContext.getRequest().getSession().getServletContext().getResourceAsStream(filepath+"/"+downName);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

}





package com.chinasoft.action;


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;




import org.apache.struts2.ServletActionContext;


import com.opensymphony.xwork2.ActionSupport;


public class SaveFile extends ActionSupport {


/**

*/
private static final long serialVersionUID = -4303075894481781406L;
private static final int BUFFER_SIZE = 16 * 1024;
private File saveFile;
private String saveFileFileName;
private String saveFileContentType;


public File getSaveFile() {
return saveFile;
}


public void setSaveFile(File saveFile) {
this.saveFile = saveFile;
}


public String getSaveFileFileName() {
return saveFileFileName;
}


public void setSaveFileFileName(String saveFileFileName) {
this.saveFileFileName = saveFileFileName;
}


public String getSaveFileContentType() {
return saveFileContentType;
}


public void setSaveFileContentType(String saveFileContentType) {
this.saveFileContentType = saveFileContentType;
}


/**
* 复制文件
* @param src
* @param dsc
*/
private static void copy(File src,File dsc){
InputStream in=null;
OutputStream out=null;
try {
in=new BufferedInputStream(new FileInputStream(src),BUFFER_SIZE);
out=new BufferedOutputStream(new FileOutputStream(dsc),BUFFER_SIZE);
byte[] buffer=new byte[BUFFER_SIZE];
while(in.read(buffer)>0){
out.write(buffer);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(in!=null){
in.close();
}
if(out!=null){
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}


/**
* 获取文件的扩展名
* @param fileName
* @return
*/
@SuppressWarnings("unused")
private static String returnExtension(String fileName){
int pos=fileName.lastIndexOf(".");
return fileName.substring(pos);
}

/**
* 文件上传
* @return
*/
public String saveFile(){
this.saveFileFileName=new Date().getTime()+returnExtension(this.saveFileFileName);
File filePath=new File(ServletActionContext.getServletContext().getRealPath("/uploadFiles"));//获取服务器路径,而不是本地路径
if(!filePath.exists()){
filePath.mkdir();
}
File uploadFile=new File(filePath+"/"+this.saveFileFileName);
copy(this.saveFile, uploadFile);
return "success";
}

public static void main(String[] args) {
String string="abc.jps";
System.out.println(returnExtension(string));
}


}






<?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>
<package name="file" extends="struts-default">
<action name="savefile"
class="com.chinasoft.action.SaveFile" method="saveFile">
<result name="success">/index.jsp</result>
</action>

<action name="allfile"
class="com.chinasoft.action.DownloadAction" method="allFile">
<param name="filepath">/uploadFiles</param>
<result name="success">/file_list.jsp</result>
</action>

<action name="downloadfile"
class="com.chinasoft.action.DownloadAction">
<param name="filepath">/uploadFiles</param>
<result type="stream">
        <param name="inputStream">getInputStream</param><!--getInputStream和下载方法名一样-->
        <param name="contentDisposition">attachment;filename="${fileName}";</param>        
       </result>


</action>
</package>
</struts>


web端文件上传功能的思考

概述 文件上传是一个很常见的需求,实现文件上传的技术也很多。下面就谈谈一些常见的上传技术以及它们的优劣。 传统表单上传 传统表单文件上传估计是运用最广泛和最简单的技术了,说它简单是因...
  • linshichen
  • linshichen
  • 2016年05月20日 10:36
  • 673

web 中常用的两种上传文件的方法总结

这里我们来总结整理一下常用的两种文件上传方式以及要注意的东西: 1、springmvc .MultipartFile 的上传方式。 2、org.apache.commons.fileupload ...
  • QH_JAVA
  • QH_JAVA
  • 2016年07月19日 23:54
  • 9440

web文件上传大小限制

一般分为两种方式,一种是服务器端判断文件大小进行限制,这种方法的存在明显的缺陷,当用户过多后,数据上传到服务器之后,在对其进行监测,大大增加了宽带和服务器的压力。 另一种是放在前端进行大小监测,...
  • HUXU981598436
  • HUXU981598436
  • 2017年04月27日 20:39
  • 1337

web项目的文件上传和 下载

文件上传和下载在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用Java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件...
  • layman1024
  • layman1024
  • 2017年05月26日 18:34
  • 1386

WEB版一次选择多个文件进行批量上传(Plupload)的解决方案

说明:Plupload支持多种浏览器,多种上传方式!       一般的WEB方式文件上传只能使用FileUpload控件进行一个文件一个文件的进行上传,就算是批量上传,也要把文件一个一个的...
  • mypanlong
  • mypanlong
  • 2016年10月18日 14:59
  • 1370

Java Web基础知识之文件上传:文件上传一窥究竟

其实文件上传的文章已经写得很多了,但是好多文章都是都是说明了怎么实现,没有说这个过程到底发生了什么(会不会引来仇恨。。),其实实现文件上传并不复杂,也没有多少代码,但是要是清楚的明白其中的原理还是费点...
  • lmy86263
  • lmy86263
  • 2016年05月05日 22:48
  • 2110

JavaWeb 文件 上传 下载

文件上传下载对于一个网站来说,重要性不言而喻。今天来分享一个JavaWeb方式实现的文件上传下载的小例子。项目依赖这个小例子是使用JavaWeb的JSP+Servlet实现的。另外使用了一些第三方的j...
  • Marksinoberg
  • Marksinoberg
  • 2016年07月30日 21:49
  • 7954

java web项目实现上传功能

一直想自己做一下这个功能,这次有机会在网上找了段代码,没想到直接拿来就成功了! 在这里记录下,防止原帖删除! 出处:http://www.cnblogs.com/xdp-gacl/p/420009...
  • dppass
  • dppass
  • 2017年05月26日 18:28
  • 356

WEB安全:文件上传漏洞

今天学习的漏洞自己以前也没有接触过,文件上传漏洞,直面意思可以利用WEB上传一些特定的文件。一般情况下文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。文件...
  • kobejayandy
  • kobejayandy
  • 2014年06月29日 23:20
  • 3910

Web文件上传原理

采用WEB技术实现B/S(浏览器/服务器)结构的管理系统是办公自动化的发展趋势。基于WEB技术的管理系统,由于开发周期短;与用户平台无关;易于实现交互式应用;能对信息进行快速、高效的收集、处理和发布,...
  • SJian123
  • SJian123
  • 2014年07月03日 11:35
  • 3220
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:web文件上传【经典】
举报原因:
原因补充:

(最多只允许输入30个字)