📄 downoruploadaction.java
字号:
package cfq.struts.action;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
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.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.upload.FormFile;
import cfq.business.dao.ResourceDao;
import cfq.business.dao.UserDao;
import cfq.struts.actionform.UploadForm;
public class DownOrUpLoadAction extends DispatchAction {
UserDao user;
ResourceDao res;
//用户上传文件
public ActionForward userUpLoad(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
UploadForm uf=(UploadForm)form;
String fname=uf.getFile().getFileName();
try {
OutputStream out = new FileOutputStream("C:\\upload\\"+fname) ;
FormFile ff = uf.getFile();
byte b[] = ff.getFileData() ;
out.write(b) ;
String result=user.addUserUpLoad(uf); //把文件相关信息保存在数据库中
out.close() ;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return mapping.findForward("upload_success");
}
//用户下载
public ActionForward downLoad(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String strName=request.getParameter("resname");
String resName="c:\\upload\\"+strName;
resName=new String(resName.getBytes("ISO-8859-1"),"GBK");
File file=new File(resName);
String fileName=file.getName();
InputStream is=new FileInputStream(file);
OutputStream os=response.getOutputStream();
BufferedInputStream bis = new BufferedInputStream(is);
BufferedOutputStream bos = new BufferedOutputStream(os);
fileName = java.net.URLEncoder.encode(fileName, "UTF-8");// 处理中文文件名的问题
fileName = new String(fileName.getBytes("UTF-8"), "GBK");// 处理中文文件名的问题
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/x-msdownload");// 不同类型的文件对应不同的MIME类型
response.setHeader("Content-Disposition", "attachment; filename="+fileName);
int bytesRead = 0;
byte[] buffer = new byte[1024];
while ((bytesRead = bis.read(buffer)) != -1){
bos.write(buffer, 0, bytesRead);// 将文件发送到客户端
}
String strResult=res.modifyCount(Integer.valueOf(request.getParameter("resid"))); //下载完以后使下载次数加一
System.out.println(strResult);
bos.flush();
bis.close();
bos.close();
return null;
}
public void setUser(UserDao user) {
this.user = user;
}
public void setRes(ResourceDao res) {
this.res = res;
}
/*public ActionForward downLoad(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
return super.execute(mapping, form, request, response);
}*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -