`
tempsitegoogle
  • 浏览: 869307 次
文章分类
社区版块
存档分类
最新评论

web文件上传【经典】

 
阅读更多
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>


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics