Extjs formPanel 显示图片 + 上传

 Ext.onReady(function() {   

04    

05  var fileForm = new Ext.form.FormPanel({   

06   title : "",   

07   renderTo : "fileUpload",   

08   fileUpload : true,   

09   layout : "form",   

10   id : "fileUploadForm",   

11   items : [{   

12      id : 'upload',   

13      name : 'upload',   

14      inputType : "file",   

15      fieldLabel : '上传图片',   

16      xtype : 'textfield',   

17      anchor : '40%'  

18    

19     }, {   

20          

21      xtype : 'box',   

22      id : 'browseImage',   

23      fieldLabel : "预览图片",   

24      autoEl : {   

25       width : 300,   

26       height : 350,   

27       tag : 'img',   

28       // type : 'image',   

29       src : Ext.BLANK_IMAGE_URL,   

30       style : 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);',   

31       complete : 'off',   

32       id : 'imageBrowse'  

33      }   

34    

35     }],   

36         

37     //form事件   

38   listeners : {   

39    'render' : function(f) {   

40     //   

41     this.form.findField('upload').on('render', function() {   

42      //通過change事件,图片也动态跟踪选择的图片变化   

43      Ext.get('upload').on('change',   

44        function(field, newValue, oldValue) {   

45    

46         //得到选择的图片路径   

47         var url = 'file://'  

48           + Ext.get('upload').dom.value;   

49               

50        // alert("url = " + url);   

51         //是否是规定的图片类型   

52         if (img_reg.test(url)) {   

53    

54          if (Ext.isIE) {   

55           var image = Ext.get('imageBrowse').dom;   

56           image.src = Ext.BLANK_IMAGE_URL;// 覆盖原来的图片   

57           image.filters   

58             .item("DXImageTransform.Microsoft.AlphaImageLoader").src = url;   

59    

60          }// 支持FF   

61          else {   

62           Ext.get('imageBrowse').dom.src = Ext   

63             .get('upload').dom.files   

64             .item(0).getAsDataURL()   

65          }   

66         }   

67        }, this);   

68     }, this);   

69    }   

70   },   

71   buttons : [{   

72      text : "提交",   

73      name : "submit",   

74      handler : submit   

75     }]   

76  });   

77    

78  // 上传图片类型   

79  var img_reg = /\.([jJ][pP][gG]){1}$|\.([jJ][pP][eE][gG]){1}$|\.([gG][iI][fF]){1}$|\.([pP][nN][gG]){1}$|\.([bB][mM][pP]){1}$/   

80    

81 });   

82    

83 //上傳圖片到服务器,   

84 function submit() {   

85  Ext.getCmp("fileUploadForm").getForm().submit({   

86    

87     url : "uploadAction.action",   

88     method : "POST",   

89     success : function(form, action) {   

90      alert("success");   

91     },   

92     failure : function(form, action) {   

93      alert("failure");   

94     }   

95    });   

96 } 

package com.cocobra.action;   

002    

003 import java.io.*;   

004 import java.util.Date;   

005 import java.util.UUID;   

006    

007 import org.apache.struts2.ServletActionContext;   

008    

009 import com.opensymphony.xwork2.ActionSupport;   

010    

011    

012 public class UploadAction extends ActionSupport {   

013    

014  /**   

015   *    

016   */  

017  private static final long serialVersionUID = 1L;   

018  private File upload;   

019  private String uploadContentType;   

020      

021  private String uploadFileName;   //fileName 前面必須和uplaod一致,不然找不到文件   

022      

023  public File getUpload() {   

024   return upload;   

025  }   

026    

027  public void setUpload(File upload) {   

028   this.upload = upload;   

029  }   

030    

031  public String getUploadContentType() {   

032   return uploadContentType;   

033  }   

034    

035  public void setUploadContentType(String uploadContentType) {   

036   this.uploadContentType = uploadContentType;   

037  }   

038    

039  public String getUploadFileName() {   

040   return uploadFileName;   

041  }   

042    

043  public void setUploadFileName(String uploadFileName) {   

044   this.uploadFileName = uploadFileName;   

045  }   

046    

047  // 上传文件的文件名   

048      

049    

050  private String getFileExp(String name) {   

051   int pos = name.lastIndexOf(".");   

052    

053   return name.substring(pos);   

054  }   

055      

056  private static final int BUFFER_SIZE = 16 * 1024;   

057      

058  public String execute() throws Exception{   

059      

060   Date d = new Date();   

061       

062   System.out.println("uploadFileName = "+this.uploadFileName);   

063       

064   //upload --  wapps 下面的文件夹,用来存放图片   

065   String toSrc = ServletActionContext.getServletContext().getRealPath("upload")+"/"+d.getTime()+getFileExp(this.uploadFileName);  //使用時間戳作為文件名   

066      

067   System.out.println("toFile= "+toSrc);   

068       

069   File toFile = new File(toSrc);   

070      

071       

072   writeFile(this.upload,toFile);   

073       

074   return SUCCESS;   

075  }   

076    

077    

078  private static void writeFile(File src, File dst) {   

079       

080   System.out.println(" == 文件寫入 == ");   

081   try {   

082    InputStream in = null;   

083    OutputStream out = null;   

084    try {   

085        

086     in = new BufferedInputStream(new FileInputStream(src),   

087       BUFFER_SIZE);   

088     out = new BufferedOutputStream(new FileOutputStream(dst),   

089       BUFFER_SIZE);   

090     byte[] buffer = new byte[BUFFER_SIZE];   

091     while (in.read(buffer) > 0) {   

092      out.write(buffer);   

093     }   

094    } finally {   

095     if (null != in) {   

096      in.close();   

097     }   

098     if (null != out) {   

099      out.close();   

100     }   

101    }   

102   } catch (Exception e) {   

103    e.printStackTrace();   

104   }   

105       

106   System.out.println("写入成功!");   

107 }   

108 } 

struts2中的struts.xml 配置 

显示代码打印
1 <action name="uploadAction" class="com.cocobra.action.UploadAction" >    

2      <interceptor-ref name="fileUpload">    

3      <!--拦截器strut2自带的, 指定上传文件的格式,如果不符合规定,将会自动拦截下来 -->  

4   <param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/jpg</param>   

5   <param name="maximumSize">20000000000</param>    

6  </interceptor-ref>   

7     <interceptor-ref name="defaultStack" />    

8     <result name ="success" >/index.jsp</result >    

9 </action> 


[转载]http://dev.firnow.com/course/4_webprogram/jsp/jsp_js/20100721/478246.html

你可能感兴趣的:(apache,jsp,struts,ext,Microsoft)