用as做滤镜效果,每种滤镜效果对应一个类,这些类都在Macromedia\Flash 8 Beta 2\zh_cn\First Run\Classes\FP8\flash\filters这个文件夹里

  一、渐变斜角——GradientBevelFilter类

  二、投影——DropShadowFilter类

  三、模糊——BlurFilter类(这个最容易了,参数少)

  四、发光——GlowFilter类

  五、渐变发光——GradientGlowFilter类

  六、斜角——BevelFilter类

  我暂时就只知道这6个

  做法是用new关键字新建一个相应类的对象,暂时就叫myfilters吧,然后把这个对象添加进一个数组filters_array,最后把这个数组赋值给mc的fliters属性,大功告成。

  我想其中关键应该就是创建对象时如何设置里面的参数吧,我想滤镜的面板大家都很熟悉的了,那么,我就把as添加滤镜的一些参数和它们的面板相对照,这样可能更容易理解。

  下面逐个举例(都是帮助里的例子啦,里面的参数名字都是可以改的,不过我觉得就用那些名字就蛮好),例子里都有函数setUpFlatRectangle(也有叫createRectangle的),是用来做一个方形mc的。

function setUpFlatRectangle(w:Number, h:Number, bgColor:Number, name:String):MovieClip {
var mc:MovieClip = this.createEmptyMovieClip(name, this.getNextHighestDepth());
mc.beginFill(bgColor);
mc.lineTo(w, 0);
mc.lineTo(w, h);
mc.lineTo(0, h);
mc.lineTo(0, 0);
return mc;
}

  直接把脚本复制到主场景的第一帧就ok了,不要忘记上面的函数哦,要注意改函数名的

  一、渐变斜角——GradientBevelFilter类

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

  脚本:

import flash.filters.GradientBevelFilter;
import flash.filters.BitmapFilter;
var art:MovieClip = setUpFlatRectangle(150, 150, 0xCCCCCC, "gradientBevelFilterExample");
//创建新的mc,实例名:art
var distance:Number = 5;
var angleInDegrees:Number = 225; // opposite 45 degrees
var colors:Array = [0xFFFFFF, 0xCCCCCC, 0x000000];
var alphas:Array = [1, 0, 1];
var ratios:Array = [0, 128, 255];
var blurX:Number = 8;
var blurY:Number = 8;
var strength:Number = 2;
var quality:Number = 3;
var type:String = "inner";
var knockout:Boolean = true;//设置各个参数
var filter:GradientBevelFilter = new GradientBevelFilter(distance, angleInDegrees, colors, alphas, ratios, blurX, blurY, strength, quality, type, knockout);//创建斜角滤镜对象filter
var filterArray:Array = new Array();
filterArray.push(filter); //把filter添加进数组filterArray,如果art上有多个滤镜效果,就直接添加进这个数组好了
art.filters = filterArray;//将art的filters属性设置为filterArray

  下面是脚本中的参数和面板中的参数对比:

  colors、alphas、ratios用来控制渐变颜色的,colors是色彩,alphas是百分比(这里面是0~1的小数),ratios是偏移量0~255(可以参考Color类)blurX、blurY是就对应面板里的模糊x、模糊y。strength是面板里的强度,是0~255的数;quality是品质,只有1、2、3分别对应低、中、高
distance是距离,默认4.0;type是类型,用字符串表示,例子中的”inner”是内侧,还有outer、fuller;knockout是个布尔值,表示是否挖空。

  二、投影——DropShadowFilter类

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

脚本:

import flash.filters.DropShadowFilter;
var art:MovieClip = createRectangle(100, 100, 0x003366, "gradientGlowFilterExample");
var distance:Number = 20;
var angleInDegrees:Number = 45;
var color:Number = 0x000000;
var alpha:Number = 0.8;
var blurX:Number = 16;
var blurY:Number = 16;
var strength:Number = 1;
var quality:Number = 3;
var inner:Boolean = false;
var knockout:Boolean = false;
var hideObject:Boolean = false;
var filter:DropShadowFilter = new DropShadowFilter(distance, angleInDegrees, color, alpha, blurX, blurY, strength, quality, inner, knockout, hideObject);
var filterArray:Array = new Array();
filterArray.push(filter);
art.filters = filterArray;

  下面是脚本中的参数和面板中的参数对比:

Distance是距离;
angleInDegrees是角度0~360
blurX、blurY是模糊x、模糊y
strength是强度,脚本里是0~5的数
quality是品质,只能是1、2、3,分别对应低、中、高
inner是内侧阴影
knockout是挖空
hideObject是隐藏对象

  三、模糊——BlurFilter类(这个最容易了,参数少嘛)

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

脚本:

import flash.filters.BlurFilter;
var rect:MovieClip = createRectangle(100, 100, 0x003366, "BlurFilterExample");
var blurX:Number = 30;
var blurY:Number = 30;
var quality:Number = 3;
var filter:BlurFilter = new BlurFilter(blurX, blurY, quality);
var filterArray:Array = new Array();
filterArray.push(filter);
rect.filters = filterArray;

  这个就不解释了,就三个参数,前面都介绍过了,下面遇到介绍过的参数就都不介绍了

  四、发光——GlowFilter类

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

脚本:

import flash.filters.GlowFilter;
var rect:MovieClip = createRectangle(100, 100, 0x003366, "gradientGlowFilterExample");
var color:Number = 0x33CCFF;
var alpha:Number = .8;
var blurX:Number = 35;
var blurY:Number = 35;
var strength:Number = 2;
var quality:Number = 3;
var inner:Boolean = false;
var knockout:Boolean = false;
var filter:GlowFilter = new GlowFilter(color, alpha, blurX, blurY, strength, quality, inner, knockout);
var filterArray:Array = new Array();
filterArray.push(filter);
rect.filters = filterArray;

  五、渐变发光——GradientGlowFilter类

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

脚本:

import flash.filters.GradientGlowFilter;
var art:MovieClip = createRectangle(100, 100, 0x003366, "gradientGlowFilterExample");
var distance:Number = 0;
var angleInDegrees:Number = 45;
var colors:Array = [0xFFFFFF, 0xFF0000, 0xFFFF00, 0x00CCFF];
var alphas:Array = [0, 1, 1, 1, 1];
var ratios:Array = [0, 63, 126, 255];
var blurX:Number = 50;
var blurY:Number = 50;
var strength:Number = 2.5;
var quality:Number = 3;
var type:String = "outer";
var knockout:Boolean = false;
var filter:GradientGlowFilter = new GradientGlowFilter(distance, angleInDegrees, colors, alphas, ratios, blurX, blurY, strength, quality, type, knockout);
var filterArray:Array = new Array();
filterArray.push(filter);
art.filters = filterArray;

  这里的参数跟发光那个很像,需要说明的就是用来设置颜色的那几个数组里的4项依次是表示从外到内的颜色的

  六、斜角——BevelFilter类

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

脚本:

import flash.filters.BevelFilter;
var distance:Number = 5;
var angleInDegrees:Number = 45;
var highlightColor:Number = 0xFFFF00;
var highlightAlpha:Number = 1;
var shadowColor:Number = 0x0000FF;
var shadowAlpha:Number = 1;
var blurX:Number = 10;
var blurY:Number = 10;
var strength:Number = 2;
var quality:Number = 3;
var type:String = "inner";
var knockout:Boolean = false;
var filter:BevelFilter = new BevelFilter(distance, angleInDegrees, highlightColor, highlightAlpha, shadowColor, shadowAlpha, blurX, blurY, strength, quality, type, knockout);
var rect:MovieClip = createRectangle(100, 100, 0x00CC00, "bevelFilterExample");
rect.filters = new Array(filter);

参数:

highlightColor、highlightAlpha设置加亮颜色
shadowColor、shadowAlpha设置阴影颜色

posted @ 2008-07-03 14:02 zhangsir 阅读(7) | 评论 (0)编辑

//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
 var version;
 var axo;
 var e;

 // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

 try {
  // version will be set for 7.X or greater players
  axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
  version = axo.GetVariable("$version");
 } catch (e) {
 }

 if (!version)
 {
  try {
   // version will be set for 6.X players only
   axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
   
   // installed player is some revision of 6.0
   // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
   // so we have to be careful.
   
   // default to the first public version
   version = "WIN 6,0,21,0";

   // throws if AllowScripAccess does not exist (introduced in 6.0r47)  
   axo.AllowScriptAccess = "always";

   // safe to call for 6.0r47 or greater
   version = axo.GetVariable("$version");

  } catch (e) {
  }
 }

 if (!version)
 {
  try {
   // version will be set for 4.X or 5.X player
   axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
   version = axo.GetVariable("$version");
  } catch (e) {
  }
 }

 if (!version)
 {
  try {
   // version will be set for 3.X player
   axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
   version = "WIN 3,0,18,0";
  } catch (e) {
  }
 }

 if (!version)
 {
  try {
   // version will be set for 2.X player
   axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
   version = "WIN 2,0,0,11";
  } catch (e) {
   version = -1;
  }
 }
 
 return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
 // NS/Opera version >= 3 check for Flash plugin in plugin array
 var flashVer = -1;
 
 if (navigator.plugins != null && navigator.plugins.length > 0) {
  if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
   var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
   var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
   var descArray = flashDescription.split(" ");
   var tempArrayMajor = descArray[2].split(".");   
   var versionMajor = tempArrayMajor[0];
   var versionMinor = tempArrayMajor[1];
   var versionRevision = descArray[3];
   if (versionRevision == "") {
    versionRevision = descArray[4];
   }
   if (versionRevision[0] == "d") {
    versionRevision = versionRevision.substring(1);
   } else if (versionRevision[0] == "r") {
    versionRevision = versionRevision.substring(1);
    if (versionRevision.indexOf("d") > 0) {
     versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
    }
   }
   var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
  }
 }
 // MSN/WebTV 2.6 supports Flash 4
 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
 // WebTV 2.5 supports Flash 3
 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
 // older WebTV supports Flash 2
 else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
 else if ( isIE && isWin && !isOpera ) {
  flashVer = ControlVersion();
 } 
 return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
 versionStr = GetSwfVer();
 if (versionStr == -1 ) {
  return false;
 } else if (versionStr != 0) {
  if(isIE && isWin && !isOpera) {
   // Given "WIN 2,0,0,11"
   tempArray         = versionStr.split(" ");  // ["WIN", "2,0,0,11"]
   tempString        = tempArray[1];   // "2,0,0,11"
   versionArray      = tempString.split(","); // ['2', '0', '0', '11']
  } else {
   versionArray      = versionStr.split(".");
  }
  var versionMajor      = versionArray[0];
  var versionMinor      = versionArray[1];
  var versionRevision   = versionArray[2];

         // is the major.revision >= requested major.revision AND the minor version >= requested minor
  if (versionMajor > parseFloat(reqMajorVer)) {
   return true;
  } else if (versionMajor == parseFloat(reqMajorVer)) {
   if (versionMinor > parseFloat(reqMinorVer))
    return true;
   else if (versionMinor == parseFloat(reqMinorVer)) {
    if (versionRevision >= parseFloat(reqRevision))
     return true;
   }
  }
  return false;
 }
}

function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?');
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs)
{
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }

  document.write(str);
}

function AC_FL_RunContent(){
  var ret =
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret =
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();   

    switch (currArg){ 
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie": 
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace":
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}

 

 

/*

 

HTML页面:

<script type="text/javascript">
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','1004','height','154','src','aaaa','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','aa' ); //end AC code
</script>

<noscript><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="1004" height="154">
      <param name="movie" value="aa.swf" />
      <param name="quality" value="high" />
      <embed src="aaaa.swf" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="1004" height="154"></embed>
    </object></noscript>

 

*/

posted @ 2008-06-26 14:37 zhangsir 阅读(8) | 评论 (0)编辑
public static string safeRequest(string str)
    {
        
string outStr = null;
        
object querStr = HttpContext.Current.Request.QueryString[str];
        
if (querStr != null)
        {
            outStr 
= InputText(querStr.ToString(), 30);
            
return outStr;
        }
        
else
            
return outStr;
    }
    
public static string InputText(string inputString, int maxLength)
    {
        System.Text.StringBuilder retVal 
= new System.Text.StringBuilder();
        
// check incoming parameters for null or blank string
        if ((inputString != null&& (inputString != String.Empty))
        {
            inputString 
= inputString.Trim();
            
//op the string incase the client-side max length
            
//fields are bypassed to prevent buffer over-runs
            if (inputString.Length > maxLength)
                inputString 
= inputString.Substring(0, maxLength);
            
//convert some harmful symbols incase the regular
            
//expression validators are changed
            for (int i = 0; i < inputString.Length; i++)
            {
                
switch (inputString[i])
                {
                    
case '"':
                        retVal.Append(
"&quot;");
                        
break;
                    
case '<':
                        retVal.Append(
"&lt;");
                        
break;
                    
case '>':
                        retVal.Append(
"&gt;");
                        
break;
                    
default:
                        retVal.Append(inputString[i]);
                        
break;
                }
            }
            
// Replace single quotes with white space
            retVal.Replace("'"" ");
            retVal.Replace(
";"" ");
            retVal.Replace(
"insert""");
            retVal.Replace(
"select""");
            retVal.Replace(
"delete""");
            retVal.Replace(
"update""");
            retVal.Replace(
"drop""");
            retVal.Replace(
"create""");
            retVal.Replace(
"alter""");
            retVal.Replace(
" ""20%");
            retVal.Replace(
"xp_cmdshell""");
            retVal.Replace(
"xp_regaddmultistring""");
            retVal.Replace(
"xp_regdeletekey""");
            retVal.Replace(
"xp_regdeletevalue""");
            retVal.Replace(
"xp_regenumkeys""");
            retVal.Replace(
"xp_regenumvalues""");
            retVal.Replace(
"xp_regread""");
            retVal.Replace(
"xp_regremovemultistring""");
            retVal.Replace(
"xp_regwrite""");
            retVal.Replace(
"sp_OACreate""");
            retVal.Replace(
"sp_OADestroy""");
            retVal.Replace(
"sp_OAMethod""");
            retVal.Replace(
"sp_OAGetProperty""");
            retVal.Replace(
"sp_OASetProperty""");
            retVal.Replace(
"sp_OAGetErrorInfo""");
            retVal.Replace(
"sp_OAStop""");
        }
        
return retVal.ToString();
    }
posted @ 2008-05-07 14:31 zhangsir 阅读(21) | 评论 (1)编辑

 

主要样式文件:

.tblEllipsis
{
    table-layout:fixed;
}

td
{
    text-overflow:ellipsis; 
    overflow:hidden; 
    white-space:nowrap;
}
span
{
    text-overflow:ellipsis; 
    overflow:hidden; 
    white-space:nowrap;
}

 

posted @ 2008-05-03 15:05 zhangsir 阅读(19) | 评论 (0)编辑
<script language="javascript" type="text/javascript">
    
var Obj_;
    document.onclick=function()
    {
        if(event.srcElement.tagName=="INPUT")
        {
            Obj_=event.srcElement;
            getNextElement(event.srcElement);
        }
    }
    function getNextElement(srcObj)
    {
        var i=0;
        while(srcObj.tagName!="TABLE")
        {
            srcObj=srcObj.parentNode;
            i++;
            if(i>20) break;
        }
        //
       
        if(srcObj.nextSibling==null)
        {
            selectParentNode(srcObj);
            return;
        }
        if(srcObj.nextSibling.tagName=="DIV")
        {
            var targetObj=srcObj.nextSibling;
            selectThem(targetObj);
        }
//        else if(srcObj.nextSibling.tagName=="TABLE")
//        {
//            //
//        }
        selectParentNode(srcObj);
    }
    function selectThem(targetObj_)
    {
        var ChexBox_Obj=targetObj_.getElementsByTagName("INPUT");
        for(var i=0;i<ChexBox_Obj.length;i++)
        {
            ChexBox_Obj[i].checked=Obj_.checked;
        }
    }
    function selectParentNode(obj)
    {
        while(obj.parentNode.previousSibling.tagName=="TABLE")
        {
            //
            var parentObj=obj.parentNode;
            var ChexBox_brother=parentObj.getElementsByTagName("INPUT");
            var counter_=0;
            for(var i=0;i<ChexBox_brother.length;i++)
            {
                if(ChexBox_brother[i].checked) counter_++;
            }
            //
            var parentNContiner=obj.parentNode.previousSibling;
            var CheckB=parentNContiner.getElementsByTagName("INPUT");
            CheckB[0].checked=counter_>0?true:false;
            obj=parentNContiner;
        }
    }
  
</script>

想必大家都是触类旁通的,这段代码适合vs2005中treeview控件生成的树形菜单,以下是代码片段:
<asp:TreeView ID="TreeView_1" ShowCheckBoxes="all" runat="server" ShowLines="true" >
posted @ 2008-04-25 02:58 zhangsir 阅读(81) | 评论 (1)编辑

效果如图



UpFile.Fla

以下是代码片段:
       fileRefListener.onSelect = function (fileRefList:FileReferenceList):Void {
       uploadBtn.enabled = true;
       rePaintProBar("progressBar", 18.0, 50.0);
       var list:Array = fileRefList.fileList;
          var fileRef:FileReference;
       totalBytes = 0;
          for(var i:Number = 0; i < list.length; i++) {
              fileRef = list[i];
        totalBytes += fileRef.size;
       txtFilePath.text = fileRef.name;
          FileExt = fileRef.type;
          }
      }
      
      fileRefListener.onCancel = function (fileRef:FileReference):Void {
       uploadBtn.enabled = false;
      }
      
      fileRefListener.onOpen = function (fileRef:FileReference):Void { 
       txt_FilePath.label = fileRef.name;
      }
      
      fileRefListener.onProgress = function (fileRef:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
       progressBar.mode = "manual";
       var temp:Number = bytesLoaded - uploadedBytes2[fileRef.name]
       uploadedBytes2[fileRef.name] = bytesLoaded;
       uploadedBytes += temp;
       progressBar.setProgress(uploadedBytes, totalBytes);
       txtUploaded.text = GetSizeType(uploadedBytes);
       txtTotal.text = GetSizeType(totalBytes);
      
      }
      
      fileRefListener.onComplete = function (fileRef:FileReference):Void {
       filesCompleted++;
       if(filesCompleted == totalFiles)
        FinishedUpload();
      }
      
       
      fileRefList.addListener(fileRefListener);
      
      browseButn.clickHandler = function () {
       fileRefList.browse(allTypes);
      }
      
      uploadBtn.clickHandler = function () {
       var list:Array = fileRefList.fileList;
       var fileRef:FileReference;
       if(uploadBtn.label == "上传")
       {   
        browseBtn.enabled = false;
        uploadBtn.label = "取消";
        totalFiles = list.length;
        filesCompleted = 0;
        uploadedBytes = 0;
        uploadedBytes2 = [];
        txtUploadNum.text = "已上传:";
        txtFileTotal.text = "文件大小:";
        for(var i:Number = 0; i < list.length; i++) {
         fileRef = list[i];
         fileRef.addListener(fileRefListener);
         uploadedBytes2[fileRef.name] = 0;
         if(uploadPage != undefined)
          fileRef.upload(uploadPage);
        }
       }
       else
       {  
        for(var i:Number = 0; i < list.length; i++) {
         fileRef = list[i];
         fileRef.cancel();
        }
        uploadBtn.label = "上传";
        browseBtn.enabled = true;
       }
      }

 


UpLoadFile.aspx

以下是代码片段:
        string saveToFolder = "/UpFile/";
        HttpFileCollection uploadedFiles = Request.Files;
        string NewFileName = Session["UpLoadFileName"].ToString();
        string Path = Server.MapPath(saveToFolder);
        for (int i = 0; i < uploadedFiles.Count; i++)
        {
            HttpPostedFile F = uploadedFiles[i];
            if (uploadedFiles[i] != null && F.ContentLength > 0)
            {
                string newName = F.FileName.Substring(F.FileName.LastIndexOf("\") + 1);
                F.SaveAs(Path + "/" + NewFileName + F.FileName.Substring(F.FileName.LastIndexOf(".")));
            }
        }

posted @ 2008-04-01 19:22 zhangsir 阅读(158) | 评论 (0)编辑

Die Auswahl ist alphabetisch sortiert und erhebt keinen Anspruch auf Vollständigkeit.

MIME-Typ Dateiendung(en) Bedeutung
application/acad *.dwg AutoCAD-Dateien (nach NCSA)
application/applefile   AppleFile-Dateien
application/astound *.asd *.asn Astound-Dateien
application/dsptype *.tsp TSP-Dateien
application/dxf *.dxf AutoCAD-Dateien (nach CERN)
application/futuresplash *.spl Flash Futuresplash-Dateien
application/gzip *.gz GNU Zip-Dateien
application/listenup *.ptlk Listenup-Dateien
application/mac-binhex40 *.hqx Macintosh Binärdateien
application/mbedlet *.mbd Mbedlet-Dateien
application/mif *.mif FrameMaker Interchange Format Dateien
application/msexcel *.xls *.xla Microsoft Excel Dateien
application/mshelp *.hlp *.chm Microsoft Windows Hilfe Dateien
application/mspowerpoint *.ppt *.ppz *.pps *.pot Microsoft Powerpoint Dateien
application/msword *.doc *.dot Microsoft Word Dateien
application/octet-stream *.bin *.exe *.com *.dll *.class Ausführbare Dateien
application/oda *.oda Oda-Dateien
application/pdf *.pdf Adobe PDF-Dateien
application/postscript *.ai *.eps *.ps Adobe PostScript-Dateien
application/rtc *.rtc RTC-Dateien
application/rtf *.rtf Microsoft RTF-Dateien
application/studiom *.smp Studiom-Dateien
application/toolbook *.tbk Toolbook-Dateien
application/vocaltec-media-desc *.vmd Vocaltec Mediadesc-Dateien
application/vocaltec-media-file *.vmf Vocaltec Media-Dateien
application/xhtml+xml *.htm *.html *.shtml *.xhtml XHTML-Dateien
application/xml *.xml XML-Dateien
application/x-bcpio *.bcpio BCPIO-Dateien
application/x-compress *.z zlib-komprimierte Dateien
application/x-cpio *.cpio CPIO-Dateien
application/x-csh *.csh C-Shellscript-Dateien
application/x-director *.dcr *.dir *.dxr Macromedia Director-Dateien
application/x-dvi *.dvi DVI-Dateien
application/x-envoy *.evy Envoy-Dateien
application/x-gtar *.gtar GNU tar-Archivdateien
application/x-hdf *.hdf HDF-Dateien
application/x-httpd-php *.php *.phtml PHP-Dateien
application/x-javascript *.js serverseitige JavaScript-Dateien
application/x-latex *.latex LaTeX-Quelldateien
application/x-macbinary *.bin Macintosh Binärdateien
application/x-mif *.mif FrameMaker Interchange Format Dateien
application/x-netcdf *.nc *.cdf Unidata CDF-Dateien
application/x-nschat *.nsc NS Chat-Dateien
application/x-sh *.sh Bourne Shellscript-Dateien
application/x-shar *.shar Shell-Archivdateien
application/x-shockwave-flash *.swf *.cab Flash Shockwave-Dateien
application/x-sprite *.spr *.sprite Sprite-Dateien
application/x-stuffit *.sit Stuffit-Dateien
application/x-supercard *.sca Supercard-Dateien
application/x-sv4cpio *.sv4cpio CPIO-Dateien
application/x-sv4crc *.sv4crc CPIO-Dateien mit CRC
application/x-tar *.tar tar-Archivdateien
application/x-tcl *.tcl TCL Scriptdateien
application/x-tex *.tex TeX-Dateien
application/x-texinfo *.texinfo *.texi Texinfo-Dateien
application/x-troff *.t *.tr *.roff TROFF-Dateien (Unix)
application/x-troff-man *.man *.troff TROFF-Dateien mit MAN-Makros (Unix)
application/x-troff-me *.me *.troff TROFF-Dateien mit ME-Makros (Unix)
application/x-troff-ms *.me *.troff TROFF-Dateien mit MS-Makros (Unix)
application/x-ustar *.ustar tar-Archivdateien (Posix)
application/x-wais-source *.src WAIS Quelldateien
application/x-www-form-urlencoded   HTML-Formulardaten an CGI
application/zip *.zip ZIP-Archivdateien
audio/basic *.au *.snd Sound-Dateien
audio/echospeech *.es Echospeed-Dateien
audio/tsplayer *.tsi TS-Player-Dateien
audio/voxware *.vox Vox-Dateien
audio/x-aiff *.aif *.aiff *.aifc AIFF-Sound-Dateien
audio/x-dspeeh *.dus *.cht Sprachdateien
audio/x-midi *.mid *.midi MIDI-Dateien
audio/x-mpeg *.mp2 MPEG-Dateien
audio/x-pn-realaudio *.ram *.ra RealAudio-Dateien
audio/x-pn-realaudio-plugin *.rpm RealAudio-Plugin-Dateien
audio/x-qt-stream *.stream Quicktime-Streaming-Dateien
audio/x-wav *.wav WAV-Dateien
drawing/x-dwf *.dwf Drawing-Dateien
image/cis-cod *.cod CIS-Cod-Dateien
image/cmu-raster *.ras CMU-Raster-Dateien
image/fif *.fif FIF-Dateien
image/gif *.gif GIF-Dateien
image/ief *.ief IEF-Dateien
image/jpeg *.jpeg *.jpg *.jpe JPEG-Dateien
image/png *.png PNG-Dateien
image/tiff *.tiff *.tif TIFF-Dateien
image/vasa *.mcf Vasa-Dateien
image/vnd.wap.wbmp *.wbmp Bitmap-Dateien (WAP)
image/x-freehand *.fh4 *.fh5 *.fhc Freehand-Dateien
image/x-portable-anymap *.pnm PBM Anymap Dateien
image/x-portable-bitmap *.pbm PBM Bitmap Dateien
image/x-portable-graymap *.pgm PBM Graymap Dateien
image/x-portable-pixmap *.ppm PBM Pixmap Dateien
image/x-rgb *.rgb RGB-Dateien
image/x-windowdump *.xwd X-Windows Dump
image/x-xbitmap *.xbm XBM-Dateien
image/x-xpixmap *.xpm XPM-Dateien
message/external-body   Nachricht mit externem Inhalt
message/http   HTTP-Headernachricht
message/news   Newsgroup-Nachricht
message/partial   Nachricht mit Teilinhalt
message/rfc822   Nachricht nach RFC 2822
model/vrml *.wrl Visualisierung virtueller Welten (VRML)
multipart/alternative   mehrteilige Daten gemischt
multipart/byteranges   mehrteilige Daten mit Byte-Angaben
multipart/digest   mehrteilige Daten / Auswahl
multipart/encrypted   mehrteilige Daten verschlüsselt
multipart/form-data   mehrteilige Daten aus HTML-Formular (z.B. File-Upload)
multipart/mixed   mehrteilige Daten gemischt
multipart/parallel   mehrteilige Daten parallel
multipart/related   mehrteilige Daten / verbunden
multipart/report   mehrteilige Daten / Bericht
multipart/signed   mehrteilige Daten / bezeichnet
multipart/voice-message   mehrteilige Daten / Sprachnachricht
text/comma-separated-values *.csv kommaseparierte Datendateien
text/css *.css CSS Stylesheet-Dateien
text/html *.htm *.html *.shtml HTML-Dateien
text/javascript *.js JavaScript-Dateien
text/plain *.txt reine Textdateien
text/richtext *.rtx Richtext-Dateien
text/rtf *.rtf Microsoft RTF-Dateien
text/tab-separated-values *.tsv tabulator-separierte Datendateien
text/vnd.wap.wml *.wml WML-Dateien (WAP)
application/vnd.wap.wmlc *.wmlc WMLC-Dateien (WAP)
text/vnd.wap.wmlscript *.wmls WML-Scriptdateien (WAP)
application/vnd.wap.wmlscriptc *.wmlsc WML-Script-C-dateien (WAP)
text/xml *.xml XML-Dateien
text/xml-external-parsed-entity   extern geparste XML-Dateien
text/x-setext *.etx SeText-Dateien
text/x-sgml *.sgm *.sgml SGML-Dateien
text/x-speech *.talk *.spc Speech-Dateien
video/mpeg *.mpeg *.mpg *.mpe MPEG-Dateien
video/quicktime *.qt *.mov Quicktime-Dateien
video/vnd.vivo *.viv *.vivo Vivo-Dateien
video/x-msvideo *.avi Microsoft AVI-Dateien
video/x-sgi-movie *.movie Movie-Dateien
workbook/formulaone *.vts *.vtts FormulaOne-Dateien
x-world/x-3dmf *.3dmf *.3dm *.qd3d *.qd3 3DMF-Dateien
x-world/x-vrml *.wrl Visualisierung virtueller Welten (VRML) (veralteter MIME-Typ, aktuell ist model/vrml)

 转自http://de.selfhtml.org/diverses/mimetypen.htm

posted @ 2008-03-31 18:50 zhangsir 阅读(24) | 评论 (0)编辑
 
ScriptManager和UpdatePanel两个控件已经能够实现了客户端与服务器端的异步通信了。要想对异步操作进一步控制的话,那我们还得进一步研究PageReqeustManager类。
PageRequestManager类是客户端的类,用于协调ScriptManager和UpdatePanel控件,管理页面上的异步更新操作。通过PageRequestManager客户端的实例我们可以深入到在客户端页面生命周期中,更细致地操作客户端的页面。
一、PageRequestManager实例:
    要想在客户端获得PageRequestManager实例,页面上必须拥有一人ScriptManager控件,并且ScriptManager控件的EnablePartialRendering属性必须设为True。
    只要页面上内含一个EnablePartialRendering属性为True的ScriptManager控件,该页面就会自动创建一个PageRequestManager实例。程序员不需要自行创建PageRequestManager实例,直接取来用即可。
    取得PageRequestManager实例的代码:
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        属性prm.get_isInAsyncPostBack():判断一个异步回送是否正在进行中。
        方法prm.abortPostBack():把一个正在执行中的异步回送取消。
二、客户端页面的生命周期:
    PageRequestManager类的优势就是能够让程序员深入至客户端页面的生命周期中去。所以要想充分发挥PageRequestManager类的功能,那首先要了解异步页的生命周期。
    1、initializeRequest:
       触发时机:当一个异步请求的回送被初始化之前引发。
       添加事件处理代码:Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(initFunc);
       移除事件处理代码:Sys.WebForms.PageRequestManager.getInstance().remove_initializeRequest(initFunc);
           initFunc是该页面初始化之前要执行的客户端方法。该方法的声明为:
           function initFunc(sender,args)
           {
                //args的数据类型是:InitializeRequestEventArgs类型。
                //args.get_postBackElement():取得初始化异步回送的元素对象。
                   //args.get_postBackElement().id取得初始化异步回送的元素对象的id号
                   //args.get_postBackElement().value取得初始化异步回送的元素对象的value值
                //args.set_cancel(bool):取消初始化异步回送,即丢弃该异步回送。
           }
        如果异步处理的过程比较慢,在异步处理的过程中再次发出同样的请求的话,那后者的异步处理请求会取消掉前一步未处理完的请求。这就是默认的异步请求优先级--“后者优先”。
        我们通常回利用initailizeRequest事件来取消一个异步回送(正在进行的回送和将要初始化的回送)。          
    2、beginRequest:
       触发时机:在异步请求初始化完成,且向服务器提出请求之前引发。
       添加事件处理代码:Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginFunc);
       移除事件处理代码:Sys.WebForms.PageRequestManager.getInstance().remove_beginRequest(beginFunc);
           beginFunc是向服务器提出请求之前要执行的客户端方法。该方法的声明为:
           function beginFunc(sender,args)
           {
                //args的数据类型是:BeginRequestEventArgs类型。
                //args.get_postBackElement():取得初始化异步回送的元素对象。
           }
        我们通常在beginRequest事件中设置一个标头,或是启始化一个动化告知用户正在进行请求处理。
    3、pageLoading:
        触发时机:异步回送已经被服务器接收并响应,但还没有对页面进行任何更新之前引发
        添加事件处理代码:Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(loadingFunc);
        移除事件处理代码:Sys.WebForms.PageRequestManager.getInstance().remove_pageLoading(loadingFunc);
             loadingFunc是页面更新之前要执行的客户端方法。该方法的声明为:
             function loadingFunc(sender,args)
             {
                //args的数据类型是:PageLoadingEventArgs类型。
                //args代表内容将要被更新或删除的UpdatePanel控件的<div>。
                //var arr = args.get_panelsDeleting(); 取得将被删除的各个UpdatePanel控件的<div>
                //var arr = args.get_panelsUpdating();取得将被更新的各个UpdatePanel控件的<div>
             }
    4、pageLoaded:
        触发时机:回送完成页面区域被更新之后引发。
        添加事件处理代码:Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(loadedFunc);
        移除事件处理代码:Sys.WebForms.PageRequestManager.getInstance().remove_pageLoaded(loadedFunc);
           loadedFunc是页面更新后要执行的客户端方法。该方法的声明为:
           function loadedFunc(sender,args)
           {
                //args的数据类型是:PageLoadedEventArgs类型
                //args代表更新的或创建的UpdatePanel控件的<div>
                //var arr = args.get_panelsUpdated();取得被更新的各个UpdatePanel控件的<div>
                //var arr = args.get_panelsCreated();取得新创建的各个UpdatePanel控件的<div>
           }
    5、endRequest:
       触发时机:回送请求处理完毕后,就会引发endRequest事件。
       添加事件处理代码:Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endFunc);
       移除事件处理代码:Sys.WebForms.PageRequestManager.getInstance().remove_endRequest(endFunc);
           endFunc是页面请求完成后执行的客户端方法。该方法的声明为:
           function endRequest(sender,args)
           {
                //args的数据类型是:EndRequestEventArgs类型
                //var err = args.get_error():判断是否发生错误,并取得错误对象。
                //var em = args.get_error().message:取得错误的出错信息。
                //args.set_errorHandled(true):设置错误已被处理。
                //var gm = args.get_errorHandled():判断错误是否被处理。
                //异步请求发生异常后,如果程序员不在客户端捕获处理的话,PageRequestManager对象会将其以对话框的形式弹出异常的信息。如果程序员想自己编写错误处理代码,而不交由PageRequestManager对象处理的话。那程序员可以通过args.get_error().message属性取得错误信息,然后编写异常处理代码,最后记得执行args.set_errorHandled(true)。这样就阻止异常继续回返给PageRequestManager对象。具体使用在后面将详细说明。
           }
三、案例:
    1、异步回送的优先级-后者的优先级高于前者:
        如果处理异步回送用的时间很长的话,那么在处理第一个回送的过程中,客户端又产生第二次异步回送的话话,那后引发的回送回取消先引发的回送。
        页面上有两个异步按钮,产生异步回送,为了拉长服务器端处理回送的时间,我分别在两个按钮的服务器click事件中使用线程休眠了10秒和5秒,然后再向lblInfo标签中输入处理结果。
        

        <asp:Button ID="btnLong" runat="server" Text="10秒后产生响应" OnClick="btnLong_Click" />
        <asp:Button ID="btnShort" runat="server" Text="5秒后产生响应" OnClick="btnShort_Click" />
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Label ID="lblInfo" runat="server" BackColor="#C0C0FF" Width="100%"></asp:Label>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="btnLong" EventName="Click" />
                <asp:AsyncPostBackTrigger ControlID="btnShort" EventName="Click" />
            </Triggers>
        </asp:UpdatePanel>
        为了让大家看清楚后一步引发会取消掉前一步的引发,我在PageRequestManager对象中加入了beginRequest事件处理代码,在发送请求前在页面上显示请求发送者 。
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_beginRequest(beginR);
        function beginR(sender,args)
        {
            var d = $get("lblInfo");
            var t = args.get_postBackElement().value;
            d.innerHTML = "正在处理同"+t+"引发的回送";
        }
       服务器端的代码:
        protected void Page_Load(object sender, EventArgs e)
        {
            ScriptManager1.RegisterAsyncPostBackControl(this.btnLong);
            ScriptManager1.RegisterAsyncPostBackControl(this.btnShort);
        }
        protected void btnLong_Click(object sender, EventArgs e)
        {
            System.Threading.Thread.Sleep(10000);
            lblInfo.Text = ((Button)sender).Text + "产生的响应";
        }
        protected void btnShort_Click(object sender, EventArgs e)
        {
            System.Threading.Thread.Sleep(5000);
            lblInfo.Text = ((Button)sender).Text + "产生的响应";
        }
        效果:当点击"10秒后产生响应"按钮的时候,在lblInfo中会显示"正在处理同10秒后产生响应引发的回送",如果此时你再点击"5秒后产生响应"按钮的时候,lblInfo的显示会变成"正在处理同5秒后产生响应引发的回送"。此时第一次引发的回送回被取消,等待5后页面上会显示出"5秒后产生响应产生的响应",并不出现第一次回送的服务器响应。
      
    2、取消异步回送:       
        取消异步回送分两种:
            a. 取消自在执行的异步回送-通过调用PageRequestManager对象的abortPostback()方法来取消。
            b. 取消新产生的异点回送-通过设置InitializeRequestEventArgs对象的cancel属性为true来取消。
          
        下面是一个查询汽车信息的界面,为了拉长服务器的处理时间,我在查询按钮中加入了6秒中的休眠时间。
        在点击查询的时候,为了不让用户干等,我加入了一个<div>,提示用户请求正在处理中,在<div>中加入一个"取消"按钮,当用户点击 "取消"按钮的时候,可以中止服务器端的异步处理。
        

        等到服务器处理完毕异步请求后显示下面的界面
        

        如果在服务器未处理完异步请求时,用户再点击"查询"按钮,做到防止后引发的回送冲掉第一次引发的回送,并在界面中加入提示信息。
        

        
        界面设计:
       

        HTML代码如下:
       <asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackErrorMessage="这是一个自定义的小异常">
        </asp:ScriptManager>
        <asp:DropDownList ID="ddl" runat="server" DataSourceID="SqlDataSource1" DataTextField="prod_name"
            DataValueField="prod_code" Width="194px">
        </asp:DropDownList>
        <asp:Button ID="Button1" runat="server" Text="查询" OnClick="Button1_Click" />
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:mydbConnectionString %>"
            SelectCommand="SELECT [prod_code], [prod_name] FROM [productor]"></asp:SqlDataSource>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <div id="divInfo" style="background-color: #ff99ff; display: none;">
                    <asp:Button ID="btnCancel" runat="server" Text="取消" /></div>
                <br />
                <asp:GridView ID="list" runat="server" Width="100%" DataSourceID="SqlDataSource2">
                </asp:GridView>
                <asp:SqlDataSource ID="SqlDataSource2" runat="server" >
          
                </asp:SqlDataSource>
            </ContentTemplate>
      &nb