webwork文件上传总结

        webwork文件上传,用百度,狗狗,一搜就可以搜到很多相关的贴子,这其中不少贴子可称经典,可以载入史册.

在公司闲得没事做,就总结一下webwork的上传全过程.

        首先我们得写一个webwork的配置文件(首先你得保证你这个工程加入了webwork)

        代码如下:

    

        <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">

 

<xwork>
 <package name="marty" extends="default">


    <action name="casePigeonholeAdd" class="com.marty.casePigeonholeManager" method="casePigeonholeAdd">
              <interceptor-ref name="uploadStack"/><!---文件上传拦截器-->
          <result type="redirect">/casePigeonholeList.action</result>
   </action>
       
   </package>
</xwork>

 

      第二,就得开发Action,简单的说就是开发java类.

      代码如下:

    

 

package com.marty;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import javax.servlet.http.HttpServletRequest;

import service.CasePigeonholeService;

import com.opensymphony.webwork.interceptor.ServletRequestAware;

public class CasePigeonholeManager  implements ServletRequestAware{

 

 private CasePigeonholeService casePigeonholeService;

 private domain.CasePigeonhole casePigeonhole;
 private File[] cattas;//文件
 private String[] cattasFileName;//文件名
 private String[] cattasContentType; //内容类型
  HttpServletRequest request=null;

 
 public String execute()throws Exception{
    return SUCCESS;
 }

 
 
 public String casePigeonholeAdd()throws Exception{
  casePigeonholeService.saveCasePigeonhole(casePigeonhole,cattas,cattasFileName,cattasContentType
    ,request);
  return SUCCESS;
 }
 
 
 @Override
 public int getModuleRightId() {
  // TODO Auto-generated method stub
  return 0;
 }

 public CasePigeonholeService getCasePigeonholeService() {
  return casePigeonholeService;
 }

 public void setCasePigeonholeService(CasePigeonholeService casePigeonholeService) {
  this.casePigeonholeService = casePigeonholeService;
 }

  public domain.CasePigeonhole getCasePigeonhole() {
  return casePigeonhole;
 }


 public void setCasePigeonhole(domain.CasePigeonhole casePigeonhole) {
  this.casePigeonhole = casePigeonhole;
 }


  public File[] getCattas() {
  return cattas;
 }


 public void setCattas(File[] cattas) {
  this.cattas = cattas;
 }


 public String[] getCattasContentType() {
  return cattasContentType;
 }


 public void setCattasContentType(String[] cattasContentType) {
  this.cattasContentType = cattasContentType;
 }


 public String[] getCattasFileName() {
  return cattasFileName;
 }


 public void setCattasFileName(String[] cattasFileName) {
  this.cattasFileName = cattasFileName;
 }


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

 

 


第三.开发SERVICE.

 

package service.impl;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

import javax.servlet.http.HttpServletRequest;

import service.CasePigeonholeService;

import com.opensymphony.webwork.interceptor.ServletRequestAware;

import common.GetProperty;

import domain.CaseDocument;
import domain.CaseInfo;
import domain.CasePigeonhole;


public class CasePigeonholeServiceImpl  implements
  CasePigeonholeService{

 

 public void saveCasePigeonhole(CasePigeonhole casePigeonhole,
   File[] cattas, String[] cattasFileName, String[] cattasContentType,HttpServletRequest request)throws Exception{
    for(int i=0;i<cattas.length;i++){
   insertFileAtta(cph.getCase_info_id(),cattas[i],cattasFileName[i],cattasContentType[i],request);
  }
  }

 }
 
 public void insertFileAtta(String caseID,
   File atta, String attaFileName, String attaContentType,HttpServletRequest request) throws Exception {
  //保存附件
  CaseDocument caseDoc=new CaseDocument();
  String propName ="caseUpload";
     String value = "";
    
     //Properties对象读取*.properties中的文件
     Properties prop = new Properties();
     try{
        // String path = System.getProperty("user.dir");      //获得工程的路径名
       String path=request.getSession().getServletContext().getRealPath("//WEB-INF//");
         logger.info("path:"+path);
         prop.load(new FileInputStream(path + File.separator +"uploadPath.properties"));
         //从工程的路径中装载propeties文件
         value = prop.getProperty(propName);    //获取参数值
     }catch(FileNotFoundException fnfe){
         logger.info("file /"uploadPath.properties/" not found");
         fnfe.printStackTrace();
     }catch(IOException ioe){
      logger.info("io exception");
         ioe.printStackTrace();
     }
 
  //文件上传处理
  String fileurl =value;//获取上传路径
  logger.info("fileurl:"+fileurl);
  FileTools.createDir(fileurl);

  String tmp = attaFileName.substring(attaFileName.lastIndexOf(".") + 1);
 
  String tmpfilename = String.valueOf(System.currentTimeMillis())
    + String.valueOf(Math.round(Math.random() * 1000D)) + "." + tmp;
  caseDoc.setCase_file_name(tmpfilename);
  caseDoc.setUrl_content(fileurl);
  caseDoc.setCase_info_id(caseID);
 
  FileOutputStream fos = new FileOutputStream(fileurl + tmpfilename);
  FileInputStream is = new FileInputStream(atta);
  FileTools.copyStream(is, fos);
  is.close();
  fos.close();

   insert(caseDoc);
 

 
 }

 

}

 

 

看我们的页面

 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title></title>
<script language="JavaScript">
function function doAdd(){

    document.forms[0].action="casePigeonholeAdd.action";
  document.forms[0].submit();
 
}
</script>


</head>
<body  leftmargin="0" topmargin="0">
<form method="post" enctype="multipart/form-data">

<input type='file' name='cattas' class='input1'/>     

<input type='button'  class='input1' οnclick="doAdd();"/>    

 </form>             
</body>
</html>             

 

 

看properties配置文件.

 

###when cvs a project please change
###the directory or create a directory
caseUpload=D:/zhudaoqin/workspace/xzzf-0822B/Webroot/upload/

 

 

 

好了.

 

 

 

 

 

 


     

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值