`
lengyue_dick
  • 浏览: 82822 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙古
社区版块
存档分类
最新评论

webwork 多图片上传

阅读更多
近期用webwork做项目,有上传文件操作,在此记录一下,有部分内容来自网络,javascript脚本只支持IE,不支持firefox。




一、FileUploadAction.java 文件;

package ebizserve.cpd.view.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.log4j.Logger;

import ebizserve.util.FileUtil;

public class FileUploadAction extends BaseAction {

    private Logger logger = Logger.getLogger(FileUploadAction.class);

    private static final long serialVersionUID = 5943699833329252614L;

    // 对应<input type=file name=fileImages />中的file控件name名称;
    private File[] fileImages;

    // 获取 文件名称为 fileImages 的 file 控件上传文件的文件名称;
    private String[] fileImagesFileName;

    // 默认调用方法
    public String execute() {

       File[] newFileImages = FileUtil.renameToFiles(fileImagesFileName,
              fileImages);

       if (newFileImages != null && newFileImages.length > 0) {

           for (File file : newFileImages) {
              try {
                  if (!FileUtil.verifyFile(file, new String[] { "jpg", "gif",
                         "jpeg", "png" })) {
                     this.addFieldError("errorimage",
                            "Error:Invalid File Type");
                     return "create";
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
           }

           for (File fileImage : newFileImages) {
              try {
                  FileInputStream fileIn;
                  int filesize = 0;

                  String imageName = fileImage.getName();
                  fileIn = new FileInputStream(fileImage);
                  filesize = fileIn.available();

                  logger.info("获得文件名称: " + imageName);
                  logger.info("获得文件大小:" + filesize);

                  FileUtil.saveFile(fileImage, imageName,
                         getProductFilePath());

              } catch (FileNotFoundException e) {
                  e.printStackTrace();
              } catch (IOException e) {
                  e.printStackTrace();
              } catch (Exception e) {
                  e.printStackTrace();
              }
           }
       }

       return SUCCESS;
    }

    // 对应的 getXXX()/setXXX()方法;
    public File[] getFileImages() {
       return fileImages;
    }

    public void setFileImages(File[] fileImages) {
       this.fileImages = fileImages;
    }

    public String[] getFileImagesFileName() {
       return fileImagesFileName;
    }

    public void setFileImagesFileName(String[] fileImagesFileName) {
       this.fileImagesFileName = fileImagesFileName;
    }

}



二、BaseAction.java 文件;

package ebizserve.cpd.view.action;

import java.io.File;

import com.opensymphony.xwork.ActionSupport;

public class BaseAction extends ActionSupport {

    private static final long serialVersionUID = -2796680436059696842L;

    private static final String FILE_PATH = "d:/upload/";  // 文件realpath;

    public String getProductFilePath() {
       File filesPath = new File(FILE_PATH);
       if (!filesPath.exists()) { // (canRead()
           filesPath.mkdirs(); // mkdirs()

       }
       return FILE_PATH;
    }

}



三、FileUtil.java 文件;
package ebizserve.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class FileUtil {

    // 重命名文件;
    public static File[] renameToFiles(String[] fileNames, File[] files) {
       File[] retFiles = null;
       if (fileNames != null && fileNames.length > 0) {
           retFiles = new File[fileNames.length];

           for (int i = 0, n = fileNames.length; i < n; i++) {
              File dist = new File(fileNames[i]);
              files[i].renameTo(dist);
              retFiles[i] = dist;
           }
       }
       return retFiles;
    }

    // save文件;
    public static long saveFile(File file, String fileName, String filePath)
           throws Exception {
       if (file == null) {
           return 0;
       }

       File filepath = new File(filePath);
       if (!filepath.isDirectory())
           filepath.mkdirs();
       File filedesc = new File(filepath, fileName);

       return copyFile(file, filedesc);
    }

    // copy文件;
    public static long copyFile(File fromFile, File toFile) {
       long len = 0;

       InputStream in = null;
       OutputStream out = null;
       try {
           in = new FileInputStream(fromFile);
           out = new FileOutputStream(toFile);
           byte[] t = new byte[1024];
           int ii = 0;
           while ((ii = in.read(t)) > 0) {
              out.write(t, 0, ii);
              len += ii;
           }

       } catch (IOException e) {
           e.printStackTrace();

       } finally {
           if (in != null) {
              try {
                  in.close();
              } catch (Exception e) {
                  e.printStackTrace();
              }
           }

           if (out != null) {
              try {
                  out.close();
              } catch (Exception e) {
                  e.printStackTrace();
              }
           }

       }

       return len;
    }

    // 验证文件正确性;
    public static boolean verifyFile(File file, String[] exts) throws Exception {
       boolean flag = false;
       if (file != null) {
           String ext = getExtension(file.getName());
           if (ext == null) {
              return false;
           }
           if (exts != null && exts.length > 0) {

              if (exts[0].equals("*.*"))
                  return true;
              for (int i = 0; i < exts.length; i++) {

                  if (ext.equalsIgnoreCase(exts[i])) {
                     flag = true;
                     break;
                  }
              }
           }
       }

       return flag;

    }

    // 取得文件扩展名;
    public static String getExtension(String fileName) {

       int newEnd = fileName.length();
       int i = fileName.lastIndexOf('.', newEnd);
       if (i != -1) {
           return fileName.substring(i + 1, newEnd);
       } else {
           return null;
       }
    }
}



四、Web.xml配置文件;
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <welcome-file-list>
       <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <filter>
       <filter-name>webwork</filter-name>
       <filter-class>
           com.opensymphony.webwork.dispatcher.FilterDispatcher
       </filter-class>
    </filter>
    <filter-mapping>
       <filter-name>webwork</filter-name>
       <url-pattern>*.action</url-pattern>
    </filter-mapping>

</web-app>


五、xwork.xml 配置文件;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
<xwork>
    <include file="webwork-default.xml" />
    <package name="default" extends="webwork-default">
       <interceptors>
           <interceptor-stack name="validationStack">
              <interceptor-ref name="validation" />
              <interceptor-ref name="component" />
              <interceptor-ref name="defaultStack" />
           </interceptor-stack>
       </interceptors>
       <default-interceptor-ref name="validationStack" />
    </package>
    <!-- 引用多个 xwork_*.xml -->
    <include file="action/xwork_upload.xml" />
</xwork>


六、xwork_upload.xml 配置文件;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
<xwork>
    <package name="productbase" extends="default">

       <interceptors>
           <interceptor name="upload"
              class="com.opensymphony.webwork.interceptor.FileUploadInterceptor">
              <param name="maximumSize">10000000</param>
           </interceptor>
           <interceptor-stack name="uploadStack">
              <interceptor-ref name="upload" />
              <interceptor-ref name="defaultStack" />
           </interceptor-stack>
       </interceptors>
       <default-interceptor-ref name="WSStack" />

       <action name="doUpload"
           class="ebizserve.cpd.view.action.FileUploadAction">
           <result name="success" type="dispatcher">
              <param name="location">/fileupload/success.jsp</param>
           </result>
           <interceptor-ref name="params" /><!-- 将请求中的参数设置到Action中去 -->
           <interceptor-ref name="basicStack" />
           <interceptor-ref name="uploadStack" />
           <interceptor-ref name="model-driven" />
       </action>

    </package>
</xwork>





七、webwork.properties 属性文件;
# 保存的目录缺省使用 javax.servlet.context.tempdir
webwork.multipart.saveDir= javax.servlet.context.tempdir
webwork.multipart.maxSize=4097152

# 文件上传设置
# 用来处理HTTP POST请求,编码使用MIME-type multipart/form-data方式的
webwork.multipart.parser=jakarta

# 指定locale,编码
webwork.i18n.encoding=UTF-8
webwork.custom.i18n.resources=messages,acl,definition

# 开发模式设定
webwork.devMode = false

# 配置自动更新设定
webwork.configuration.xml.reload=true

# 国际化资源设定
webwork.i18n.reload=true




访问方式:http://localhost:8080/webworkupload/fileupload/upload.jsp]
分享到:
评论
1 楼 ccw 2009-12-24  
请问:有没有jsp页面吗?
我也在做多图片上传的问题

相关推荐

    webwork中上传文件

    webwork中上传文件,webwork文件上传.doc

    WebWork 文件上传

    WebWork 文件上传 多个文件上传 范例

    webwork 上传的例子

    这个是我查看了大量的网上文档后,利用webwork的上传机制写的一个上传到例子。因为网上很多都转来转去的文档。能不能不运行,还不一定。改起来很费时,所以我把我写的上传上去。力争做到用最少的代码和简单配置来...

    使用webwork实现上传图片并显示

    只是一个小例子,使用webwork实现上传图片并在页面显示出图片

    webwork 多文件上传

    NULL 博文链接:https://xiaoqiang21.iteye.com/blog/763674

    webwork文件上传

    简单的使用webwork框架实现了文件上传的功能 主要是针对EXCEL文件

    webwork的上传和下载的Demo

    我自己写的。上次的只有上传没有下载。这次的添加了下载的功能。我自己备份用的。有需要可以参考。保证能够运行

    webwork上传下载

    webwork上传下载webwork上传下载webwork上传下载webwork上传下载webwork上传下载webwork上传下载webwork上传下载webwork上传下载

    webwork上传操作说明

    webwork上传文件pdf文件说明文档

    webwork 上传文件与下载文件 使用笔记

    项目里需要实现webwork 上传与下载文件操作, 自己摸索过程中出现了很多问题,一一解决, 记录下来本准备做参考,现贡献给大家, 记得有点乱,耐心看完,一定会有帮助的。

    使用webwork上传excel并导入数据库

    使用webwork上传excel并导入数据库,上传时只能上传excel文件,数据库为mysql,可以根据需要自行修改。 数据库的配置也请自行修改。

    WEBWORK

    WEBWORK的配置

    webwork详细讲解.doc

    webwork的讲解,详细的讲解了webwork的工作原理 还有例子可供参考

    webwork教程webwork教程webwork教程

    webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程

    WEBWORK的源文件压缩包

    WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包

    webwork

    webwork源码下载

    WebWork docs -- webWork 详细的说明文档

    webWork 详细的说明文档, 由于我的上传大小有限, 这个好东西我只能是分两次上传了, 下载的人可能要辛苦一些了, 不过这些都是值得的, 将&lt;&lt;WebWork docs 2 -- webWork 详细的说明文档&gt;&gt; 也一同下载下来, 下载后两个...

    webwork源码底层实现

    webwork底层源码,用于webwork框架设计

    webwork的jar包

    这是webwork1的jar包,还有webwork-2.2.7.jar和webwork-src-2.2.7.jar

    webwork+ibatis上传文件简单实例

    NULL 博文链接:https://sgl124764903.iteye.com/blog/812973

Global site tag (gtag.js) - Google Analytics