首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts2 文件下传(多文件下传) upload

2012-10-09 
struts2 文件上传(多文件上传) upload?(1)前面的的form JSP 页面?s:form idformId action/operation

struts2 文件上传(多文件上传) upload

?(1)前面的的form JSP 页面
?<s:form id="formId" action="/operation/saveCompetitionProductReport.do" enctype="multipart/form-data" theme="simple">
?
?<table>
???? <tr>
????<td colspan="4">关注度截图:
???????? <input type="file" name="pic"/></td>
???? </tr>
???? <tr>
????<td colspan="4">相关检索字:
????? <input type="file"? name="pic"/></td>
???? </tr>
?</table>
?
?<s:submit/><s:reset/>
?</s:form>?
??
?(2)struts.xml
?
???<interceptors>
???<interceptor-stack name="imgFileUpload">
????<interceptor-ref name="fileUpload">
?????<param name="allowedTypes">image/jpeg,image/pjpeg,image/gif,image/x-png</param>
?????<param name="maximumSize">204800</param>
????</interceptor-ref>
????<interceptor-ref name="defaultStack"/>
???</interceptor-stack>
??? ?</interceptors>?
??
?? <action name="saveCompetitionProductReport" method="saveCompetitionProductReport">
???<interceptor-ref name="imgFileUpload"/>???? <!-- ================= 拦截器的使用 ================ -->
???<result name="success">
????/jsp/operation/edit/MyJsp.jsp
???</result>
???<result name="error">/jsp/error.jsp</result>
??</action> ?
??
?(3)Action
?/*-------------------------------------------------*/
?private static final int BUFFER_SIZE = 20 * 1024;//文件大小
?private File[] pic;? //对应 <input type="file"? name="pic"/>
?private String[] picFileName; //固定构成格式
?private String[] picContentType; //固定构成格式
?/*-------------------------------------------------*/
?
?//-------- setter / getter
???//.......... code here ............
?
?/**
? * 复制文件
? * @param src
? * @param dest
? */
?private static void copy(File src, File dest){
??try{
???InputStream in = null;
???OutputStream out = null;
???try{
????in = new BufferedInputStream(new FileInputStream(src),BUFFER_SIZE);
????out = new BufferedOutputStream(new FileOutputStream(dest),BUFFER_SIZE);
????byte[] buffer = new byte[1024];
????while(in.read(buffer) > 0){
?????out.write(buffer);
????}
???}finally{
????if(null != in){
?????in.close();
????}
????if(null != out){
?????out.close();
????}
???}
??}catch(Exception e){
???logger.error("复制文件出错",e);
??}
?}

?/**
? * 得到文件的后缀名
? * @param fileName
? * @return
? */
?private static String getExtention(String fileName){
??int pos = fileName.lastIndexOf(".");
??return fileName.substring(pos);
?}
?
?
?
?public String saveCompetitionProductReport(){
??
??List<String> picUrlList = new ArrayList<String>();//图片在服务器上面的相对位置
??if(null != pic){
???for(int i = 0, j = pic.length; i<j; i++){
????String extention = getExtention(picFileName[i]);
????//? "/uploadImage" 是 项目下的文件夹,防止上传的文件 图片被成功上传之后,会存放到tomcat的项目/uploadImage 目录下
????String fileName = ServletActionContext.getServletContext().getRealPath("/uploadImage")+File.separator+new Date().getTime()+ Math.random() + extention;
????
????//System.out.println("before===================" + fileName +"\t" +picFileName[i]);
????File imageFile = new File(fileName);
????copy(pic[i], imageFile);
????
????String tmpFileName = fileName.substring(fileName.indexOf(File.separator +"uploadImage"));
????picUrlList.add(tmpFileName);
???}
???
???Boolean saveMainTableDataFlag = operationBusiness.saveCompetitionProductReport(this);
???if(saveMainTableDataFlag){//当主表保存成功的时候,开始保存明细
?????//--------- code here
???}
???
??}
??
??return Action.ACTION_RESULT_SUCCESS;
?}??

热点排行