zoukankan      html  css  js  c++  java
  • flex fileupload

    展开下面的代码看吧,第一次使用代码模式,有点问题

    一、CS相应源码如下:

    1. import flash.net.FileReference;
    2. import flash.net.URLRequest;
    3. import flash.net.FileFilter;
    4. import flash.display.Sprite;
    5. import flash.events.*;
    6. var fileRef = new FileReference();
    7. var fileListener = new Object();
    8. var totalBytes:Number = 0;
    9. var uploadedBytes:Number = 0;
    10. //从外部获取也许上传的文件类型
    11. var acceptFileType:String = getFlashVars("acceptFileType");
    12. //设置上传完毕后执行的js脚本
    13. var comJsFun:String=getFlashVars("ComJsFun");
    14. //this.tbFilePath.text = comJsFun;
    15. //
    16. var uploadURL:URLRequest = new URLRequest();
    17. var xmlRequest:URLRequest = new URLRequest();
    18. var xmlLoader:URLLoader = new URLLoader();
    19. //初始化系统
    20. function init() {
    21.     this.mcWaterStyle.visible = false;
    22.     this.mcFilePlayer.visible = false;
    23.     this.progressBar.visible = false;
    24.     //设置按钮文字大小,默认的字体和大小有点难看。
    25.     var myFormat = new TextFormat();
    26.     myFormat.size = 12;
    27.     this.btBrowser.setStyle("textFormat", myFormat);
    28.     this.btUpload.setStyle("textFormat", myFormat);
    29.     this.tbFilePath.setStyle("textFormat", myFormat);
    30.    
    31.     this.mcWaterStyle.style0.setStyle("textFormat", myFormat);
    32.     this.mcWaterStyle.style1.setStyle("textFormat", myFormat);
    33.     this.mcWaterStyle.style2.setStyle("textFormat", myFormat);
    34.     this.uploadInfo.setStyle("textFormat", myFormat);
    35.    
    36. //如果从FlashVars获取的参数acceptFileType(限定上传文件类型)无值,那么访问相应的XML(上传文件类型配置)
    37.     if(acceptFileType==""){
    38.         //从外部获取上传附加的文件类型。
    39.         xmlRequest = new URLRequest("http://www.cnblogs.com/XML/Setting_Article.xml");
    40.         xmlLoader.load(xmlRequest);
    41.         xmlLoader.addEventListener(Event.COMPLETE,loaderHandler);
    42.     }
    43. }
    44. init();
    45. //按钮事件
    46. this.btBrowser.addEventListener(MouseEvent.CLICK, browseHandler);
    47. this.btUpload.addEventListener(MouseEvent.CLICK, UploadHandler);
    48. fileRef.addEventListener(Event.SELECT,selectHandler);//选择文件
    49. fileRef.addEventListener(Event.CANCEL, cancelHandler);//上传过程中取消事件
    50. fileRef.addEventListener(Event.OPEN, openHandler);//开始上传事件
    51. fileRef.addEventListener(Event.COMPLETE, completeHandler);//上传完毕事件
    52. fileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadCompleteDataHandler)//上传数据完毕事件,有点迷惑Event.COMPLETE跟DataEvent.UPLOAD_COMPLETE_DATA的区别
    53. fileRef.addEventListener(ProgressEvent.PROGRESS, progressHandler);//上传过程事件,相应的进度条代码在这里了
    54. //监听上传过程可能出错的事件
    55. fileRef.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
    56. fileRef.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
    57. fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
    58. //浏览按钮事件
    59. function browseHandler(event:MouseEvent):void {
    60.     fileRef.browse(browseGetTypes());
    61. }
    62. function browseGetTypes():Array {
    63.     var allTypes:Array = new Array(browseGetFileTypeFilter());
    64.     return allTypes;
    65. }
    66. function browseGetFileTypeFilter():FileFilter {
    67.    
    68.     if(acceptFileType!=""){
    69.         var arr = acceptFileType.split("|");
    70.         var FileExtension = "";
    71.         for(var i=0;i<arr.length;i++){
    72.             if (arr == "")
    73.                 continue;
    74.             if(i==0)
    75.                 FileExtension = "*."+arr;
    76.             else
    77.                 FileExtension = FileExtension+";*."+arr;
    78.         }
    79.         return new FileFilter("文件格式("+FileExtension+")", ""+FileExtension+"");
    80.     }else{
    81.         return new FileFilter("所有文件(*.*)","*.*");
    82.     }
    83.    
    84.     //return new FileFilter("所有文件(*.*)","*.*");
    85. }
    86. //加载上传配置事件
    87. function loaderHandler(event:Event):void {
    88.     var myXML:XML = new XML(xmlLoader.data);
    89.     //myXML = XML();
    90.     acceptFileType = myXML.child("Upload").ContontFileStyle;
    91.     trace("--"+myXML.child("Upload").ContontFileStyle+"--");
    92.     if(this.uploadInfo.text=="")
    93.         this.uploadInfo.text = "允许的格式:"+myXML.child("Upload").ContontFileStyle;
    94. }
    95. //选择文件事件
    96. function selectHandler(event:Event):void{
    97.     this.uploadInfo.text = "";
    98.     this.mcWaterStyle.visible = false;
    99.     this.mcFilePlayer.visible = false;
    100.    
    101.     if (fileRef.size > 0){
    102.         totalBytes = fileRef.size;
    103.         this.tbFilePath.text =  fileRef.name+ "[" + this.getSizeType(totalBytes) + "]";
    104.         var fileExtName = fileRef.name.substring(fileRef.name.lastIndexOf(".")+1);
    105.         switch(fileExtName.toLowerCase()){
    106.             case "jpg":
    107.             case "jpeg":
    108.             case "gif":
    109.             case "bmp":
    110.                 this.mcWaterStyle.visible = true;
    111.                 break;
    112.             case "flv":
    113.                 this.mcFilePlayer.visible = true;
    114.                 this.mcFilePlayer.mcWidth.text = 410;
    115.                 this.mcFilePlayer.mcHeight.text = 370;
    116.                 break;
    117.             case "swf":
    118.                 this.mcFilePlayer.visible = true;
    119.                 this.mcFilePlayer.mcWidth.text = 550;
    120.                 this.mcFilePlayer.mcHeight.text = 400;
    121.                 break;
    122.             case "rm":
    123.             case "rmvb":
    124.             case "mp3":
    125.             case "avi":
    126.             case "mpg":
    127.             case "mpeg":
    128.             case "asf":
    129.             case "wmv":
    130.             case "wma":
    131.                 this.mcFilePlayer.visible = true;
    132.                 this.mcFilePlayer.mcWidth.text = 550;
    133.                 this.mcFilePlayer.mcHeight.text = 400;
    134.                 break;
    135.             default:
    136.                 this.mcWaterStyle.visible = false;
    137.                 this.mcFilePlayer.visible = false;
    138.                 break;
    139.         }
    140.     }else{
    141.         this.uploadInfo.text = "错误:您没有选择文件!";
    142.     }
    143. }
    144. //上传过程中取消
    145. function cancelHandler(event:Event):void{
    146.     this.progressBar.visible = false;
    147. };
    148. //当上载或下载操作开始时
    149. function openHandler(event:Event):void{
    150.     this.tbFilePath.visible = false;
    151.     this.mcWaterStyle.visible = false;
    152.     this.mcFilePlayer.visible = false;
    153.     this.btBrowser.visible = false;
    154.     this.btUpload.label = "取消";
    155.     this.progressBar.visible = true;
    156. };
    157. //点击伤
    158. function UploadHandler(event:MouseEvent):void{
    159.     if (this.btUpload.label=="上传"){
    160.         var WaterMarkStyleP:String = "";
    161.         if(this.mcWaterStyle.style0.selected == true)
    162.             WaterMarkStyleP = "0";
    163.         else if(this.mcWaterStyle.style1.selected == true)
    164.             WaterMarkStyleP = "1";
    165.         else if(this.mcWaterStyle.style2.selected == true)
    166.             WaterMarkStyleP = "2";
    167.        
    168.         var mcFilePlayerP:String="&width="+this.mcFilePlayer.mcWidth;
    169.         mcFilePlayerP += "&height="+this.mcFilePlayer.mcHeigth;
    170.        
    171.         if(this.mcFilePlayer.mcAutoYes.selected == true)
    172.             mcFilePlayerP += "&auto=true";
    173.         else if(this.mcFilePlayer.mcAutoNo.selected == true)
    174.             mcFilePlayerP += "&auto=false";
    175.            
    176.         uploadURL.url="Upload_File_SWF.aspx?WaterMarkStyle="+WaterMarkStyleP+mcFilePlayerP;
    177.         fileRef.upload(uploadURL);//此为采用aspx默认方式进行上传的文件地址。如:Upload_File_SWF.aspx此页面我在上传完毕后,直接进行Response.Write("true");那么Flash可在uploadCompleteDataHandler后可后去到true这个数据。以便你进行操作。
    178.     }else if(this.btUpload.label=="取消"){
    179.         this.tbFilePath.visible = true;
    180.         this.mcWaterStyle.visible = false;
    181.         this.mcFilePlayer.visible = false;
    182.         this.btBrowser.visible = true;
    183.         this.btUpload.label = "上传";
    184.         this.progressBar.visible = false;
    185.         this.uploadInfo.text="";
    186.     }else if(this.btUpload.label=="重新上传"){
    187.         this.tbFilePath.visible = true;
    188.         this.mcWaterStyle.visible = false;
    189.         this.mcFilePlayer.visible = false;
    190.         this.btBrowser.visible = true;
    191.         this.btUpload.label = "上传";
    192.         this.progressBar.visible = false;
    193.     }
    194. }
    195. //在文件上载或下载操作期间定期调用
    196. function progressHandler(event:ProgressEvent):void{
    197.     //var fileRef:FileReference = FileReference(event.target);
    198.     if(event.bytesLoaded==event.bytesTotal){
    199.         this.uploadInfo.text= "正在转移数据,请稍后--"+getSizeType(event.bytesLoaded)+"/"+getSizeType(event.bytesTotal);
    200.     }else{
    201.         this.progressBar.mcMask.width = (event.bytesLoaded/event.bytesTotal)*this.progressBar.mcLoaded.width;
    202.         this.uploadInfo.text="上传文件中,请等待--"+getSizeType(event.bytesLoaded)+"/"+getSizeType(event.bytesTotal);
    203.     }
    204. }
    205. function completeHandler(event:Event):void {
    206.     //trace("completeHandler: " + event);
    207.     this.tbFilePath.visible = true;
    208.     this.tbFilePath.text = "";
    209.     this.mcWaterStyle.visible = false;
    210.     this.mcFilePlayer.visible = false;
    211.     this.btBrowser.visible = true;
    212.     this.btUpload.label = "上传";
    213.     this.progressBar.visible = false;
    214.     //this.uploadInfo.text = "上传成功!";
    215. }
    216. function uploadCompleteDataHandler(event:DataEvent):void {
    217.     if(event.data.indexOf("|")!=-1){
    218.         var fileInfoArr = event.data.split("|");
    219.         if(fileInfoArr[0].toLowerCase()=="true"){
    220.             this.uploadInfo.text = "上传成功:"+fileInfoArr[1]+"!";
    221.             if(comJsFun!=""){
    222.                 //ExternalInterface.call("UploadForEditor","hh");
    223.                 ExternalInterface.call("UploadForEditor",event.data.replace("true|",""));
    224.                 //this.tbFilePath.text = event.data;
    225.             }
    226.         }else{
    227.             this.uploadInfo.text = "上传失败:"+EncodeUtf8(fileInfoArr[1])+"!";
    228.         }
    229.     }
    230.    
    231.    
    232.    
    233.     trace("uploadCompleteData: " + event.data);
    234. }
    235. //错误事件
    236. function httpStatusHandler(event:HTTPStatusEvent):void {
    237.   trace("httpStatusHandler: " + event);
    238.   this.mcWaterStyle.visible = false;
    239.   this.mcFilePlayer.visible = false;
    240.   this.uploadInfo.text="HTTP错误: " +  event;
    241. }
    242. function ioErrorHandler(event:IOErrorEvent):void {
    243.   trace("ioErrorHandler: " + event);
    244.   this.mcWaterStyle.visible = false;
    245.   this.mcFilePlayer.visible = false;
    246.   this.uploadInfo.text="IO错误: " +  event;
    247. }
    248. function securityErrorHandler(event:SecurityErrorEvent):void {
    249.   trace("openHandler: " + event);
    250.   this.mcWaterStyle.visible = false;
    251.   this.mcFilePlayer.visible = false;
    252.   this.uploadInfo.text="IO安全设置错误: " +  event;
    253. }
    254. /**//*--------------------以下为常用函数-------------
    255. ---------------------------------------------*/
    256. //处理文件大小表示方法
    257. function getSizeType(s)
    258. {
    259.     var danwei = ["Byte","KB","MB","GB" ];
    260.     var d = 0;
    261.     while ( s >= 900 )
    262.     {
    263.         s = Math.round(s*100/1024)/100;
    264.         d++;
    265.     }
    266.     return s+danwei[d];
    267. }
    268. function getFlashVars(parName){
    269.     var parValue:String=stage.loaderInfo.parameters[parName];
    270.     if(parValue==null)
    271.       return "";
    272.     else
    273.       return parValue;
    274. }
    275. //转换乱码
    276. function EncodeUtf8(str : String):String {
    277.     var oriByteArr : ByteArray = new ByteArray();
    278.     oriByteArr.writeUTFBytes(str);
    279.     var tempByteArr : ByteArray = new ByteArray();
    280.     for (var i = 0; i<oriByteArr.length; i++) {
    281.         if (oriByteArr == 194) {
    282.             tempByteArr.writeByte(oriByteArr[i+1]);
    283.             i++;
    284.         } else if (oriByteArr == 195) {
    285.             tempByteArr.writeByte(oriByteArr[i+1] + 64);
    286.             i++;
    287.         } else {
    288.             tempByteArr.writeByte(oriByteArr);
    289.         }
    290.     }
    291.     tempByteArr.position = 0;
    292.     return tempByteArr.readMultiByte(tempByteArr.bytesAvailable,"chinese");
    293.     //return tempByteArr.readMultiByte(tempByteArr.bytesAvailable,"chinese");
    294. }
    复制代码

    二、相应的上传文件代码(.net)

    1. using System;
    2. using System.Data;
    3. using System.Configuration;
    4. using System.Collections;
    5. using System.Web;
    6. using System.Web.Security;
    7. using System.Web.UI;
    8. using System.Web.UI.WebControls;
    9. using System.Web.UI.WebControls.WebParts;
    10. using System.Web.UI.HtmlControls;
    11. using System.IO;
    12. using System.Drawing;
    13. using System.Drawing.Imaging;
    14. namespace TT.WebManager.Web.Admin.Article
    15. {
    16.     public partial class Upload_File_SWF : System.Web.UI.Page
    17.     {
    18.         string AppPath = "";
    19.         string FileURL = "";//文件网络地址
    20.         string FileURL2 = "";//文件网络地址,如果加了水印
    21.         string FileAppPath = "";
    22.         string FileAppPath2 = "";
    23.         string sFilePathName = "";
    24.         string sFileName = "";
    25.         int FileSize = 0;
    26.         string FileExtName = "";
    27.         int WaterMarkStyle = 0;
    28.         string FileAuto = "true";
    29.         int FileWidth = 0;
    30.         int FileHeigth = 0;
    31.         protected void Page_Load(object sender, EventArgs e)
    32.         {
    33.             TT.WebManager.BLL.Setting bll = new TT.WebManager.BLL.Setting();
    34.             bll.Init(false);
    35.             AppPath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath;
    36.             WaterMarkStyle = Methods.Req.GetInt("WaterMarkStyle", 0);
    37.             FileWidth = Methods.Req.GetInt("Width",550);
    38.             FileHeigth = Methods.Req.GetInt("Heigth", 400);
    39.             FileAuto = Methods.Req.GetString("Auto");
    40.             try
    41.             {
    42.                 HttpPostedFile postedFile = Request.Files["Filedata"];
    43.                 sFilePathName = postedFile.FileName;
    44.                 FileSize = postedFile.ContentLength;  //===========获取文件的大小
    45.                 if (FileSize <= 0)
    46.                 {
    47.                     Response.Clear();
    48.                     Response.Write("false|您没有选择文件!");
    49.                     Response.End();
    50.                 }
    51.                 else
    52.                 {
    53.                     sFileName = sFilePathName.Substring(sFilePathName.LastIndexOf("\\") + 1);
    54.                     FileExtName = sFilePathName.Substring(sFilePathName.LastIndexOf(".") + 1);
    55.                     if (IsValidFileType(FileExtName) == false)
    56.                     {
    57.                         Response.Clear();
    58.                         Response.Write("false|系统禁止上传此格式的文件!");
    59.                         Response.End();
    60.                     }
    61.                     else
    62.                     {
    63.                         GotoUploadFile(postedFile);
    64.                     }
    65.                 }
    66.             }
    67.             catch { }
    68.            
    69.         }
    70.         protected void GotoUploadFile(HttpPostedFile postedFile)
    71.         {
    72.             string NewFileName = DateTime.Now.ToString("yyyyMMddhhmmss") + FileSize + "." + FileExtName;
    73.             string NewFileName2 = DateTime.Now.ToString("yyyyMMddhhmmss") + FileSize + "_1." + FileExtName;
    74.             string NewFilePath = "";
    75.             if (Model.Article.Setting.Upload_SortFile == true)
    76.             {
    77.                 if (Model.Article.Setting.Upload_FolderStyle != "")
    78.                 {
    79.                     FileURL = Model.Article.Setting.Upload_Prefix + Model.Article.Setting.Upload_Folder + "/" + FileExtName + "/" + DateTime.Now.ToString(Model.Article.Setting.Upload_FolderStyle) + "/" + NewFileName;
    80.                     FileURL2 = Model.Article.Setting.Upload_Prefix + Model.Article.Setting.Upload_Folder + "/" + FileExtName + "/" + DateTime.Now.ToString(Model.Article.Setting.Upload_FolderStyle) + "/" + NewFileName2;
    81.                     NewFilePath = AppPath + Model.Article.Setting.Upload_Folder.Replace("/", "\\") + "\\" + FileExtName + "\\" + DateTime.Now.ToString(Model.Article.Setting.Upload_FolderStyle).Replace("/", "\\");
    82.                 }
    83.                 else
    84.                 {
    85.                     FileURL = Model.Article.Setting.Upload_Prefix + Model.Article.Setting.Upload_Folder + "/" + FileExtName + "/" + NewFileName;
    86.                     FileURL2 = Model.Article.Setting.Upload_Prefix + Model.Article.Setting.Upload_Folder + "/" + FileExtName + "/" + NewFileName2;
    87.                     NewFilePath = AppPath + Model.Article.Setting.Upload_Folder.Replace("/", "\\") + "\\" + FileExtName;
    88.                 }
    89.             }
    90.             else
    91.             {
    92.                 if (Model.Article.Setting.Upload_FolderStyle != "")
    93.                 {
    94.                     FileURL = Model.Article.Setting.Upload_Prefix + Model.Article.Setting.Upload_Folder + "/" + DateTime.Now.ToString(Model.Article.Setting.Upload_FolderStyle) + "/" + NewFileName;
    95.                     FileURL2 = Model.Article.Setting.Upload_Prefix + Model.Article.Setting.Upload_Folder + "/" + DateTime.Now.ToString(Model.Article.Setting.Upload_FolderStyle) + "/" + NewFileName2;
    96.                     NewFilePath = AppPath + Model.Article.Setting.Upload_Folder.Replace("/", "\\") + "\\" + DateTime.Now.ToString(Model.Article.Setting.Upload_FolderStyle).Replace("/", "\\");
    97.                 }
    98.                 else
    99.                 {
    100.                     FileURL = Model.Article.Setting.Upload_Prefix + Model.Article.Setting.Upload_Folder + "/" + NewFileName;
    101.                     FileURL2 = Model.Article.Setting.Upload_Prefix + Model.Article.Setting.Upload_Folder + "/" + NewFileName2;
    102.                     NewFilePath = AppPath + Model.Article.Setting.Upload_Folder.Replace("/", "\\");
    103.                 }
    104.             }
    105.             TT.WebManager.Methods.IIOO.CreateDirectory(NewFilePath);
    106.             FileAppPath = NewFilePath + "\\" + NewFileName;
    107.             FileAppPath2 = NewFilePath + "\\" + NewFileName2;
    108.             postedFile.SaveAs(FileAppPath);
    109.             switch (FileExtName.ToLower())
    110.             {
    111.                 case "jpg":
    112.                 case "jpeg":
    113.                 case "gif":
    114.                 case "bmp":
    115.                 case "png":
    116.                     //==========生成水印=============
    117.                     switch (WaterMarkStyle)
    118.                     {
    119.                         case 1:
    120.                             CreateWeaterText(FileAppPath, FileAppPath2, Model.Article.Setting.WaterMark_Text, FileExtName);
    121.                             FileURL = FileURL2;
    122.                             break;
    123.                         case 2:
    124.                             CreateWeaterPicture(FileAppPath, FileAppPath2, Server.MapPath(Model.Article.Setting.WaterMark_Picture), FileExtName);
    125.                             FileURL = FileURL2;
    126.                             break;
    127.                         default:
    128.                             break;
    129.                     }
    130.                     break;
    131.             }
    132.             string ReturnString = sFileName + "|" + FileURL + "|" + FileWidth + "|" + FileHeigth + "|" + FileAuto;
    133.             Response.Clear();
    134.             Response.Write("true|"+ReturnString);
    135.             Response.End();
    136.         }
    137.         private void CreateWeaterText(string paraOldFileName, string paraNewsFileName, string AddText, string FileExtensionName)
    138.         {
    139.             System.Drawing.Image image = System.Drawing.Image.FromFile(paraOldFileName);
    140.             System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
    141.             //文字抗锯齿
    142.             g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
    143.             g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    144.             g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
    145.             g.DrawImage(image, 0, 0, image.Width, image.Height);
    146.             //Font font = new Font("黑体", 14, FontStyle.Bold);
    147.             //Brush b = new SolidBrush(Color.Yellow);
    148.             Font font = new Font(Model.Article.Setting.WaterMark_FontFamily, Model.Article.Setting.WaterMark_FontSize, FontStyle.Bold);
    149.             Brush b = new SolidBrush(Methods.TypeParse.StrToColor(Model.Article.Setting.WaterMark_FontColor));
    150.             int Xpos = 0;
    151.             int Ypos = 0;
    152.             SizeF crsize = new SizeF();
    153.             crsize = g.MeasureString(AddText, font);
    154.             int crsize_With = Convert.ToInt32(crsize.Width);
    155.             int crsize_Height = Convert.ToInt32(crsize.Height);
    156.             int WaterMark_xPos = 10;
    157.             int WaterMark_yPos = 10;
    158.             switch (Model.Article.Setting.WaterMark_Position)//==========从图片的左上角开始算起(0,0)
    159.             {
    160.                 case 1:
    161.                     Xpos = WaterMark_xPos;
    162.                     Ypos = WaterMark_yPos;
    163.                     break;
    164.                 case 2:
    165.                     Xpos = image.Width - (crsize_With + WaterMark_xPos);
    166.                     Ypos = WaterMark_yPos;
    167.                     break;
    168.                 case 3:
    169.                     Xpos = WaterMark_xPos;
    170.                     Ypos = image.Height - (crsize_Height + WaterMark_yPos);
    171.                     break;
    172.                 case 4:
    173.                     Xpos = image.Width - (crsize_With + WaterMark_xPos);
    174.                     Ypos = image.Height - (crsize_Height + WaterMark_yPos);
    175.                     break;
    176.             }
    177.             //画阴影
    178.             PointF pt = new PointF(0, 0);
    179.             System.Drawing.Brush TransparentBrush0 = new System.Drawing.SolidBrush(System.Drawing.Color.FromArgb(50, System.Drawing.Color.Black));
    180.             System.Drawing.Brush TransparentBrush1 = new System.Drawing.SolidBrush(System.Drawing.Color.FromArgb(20, System.Drawing.Color.Black));
    181.             g.DrawString(AddText, font, TransparentBrush0, Xpos, Ypos + 1);
    182.             g.DrawString(AddText, font, TransparentBrush0, Xpos + 1, Ypos);
    183.             g.DrawString(AddText, font, TransparentBrush1, Xpos + 1, Ypos + 1);
    184.             g.DrawString(AddText, font, TransparentBrush1, Xpos, Ypos + 2);
    185.             g.DrawString(AddText, font, TransparentBrush1, Xpos + 2, Ypos);
    186.             TransparentBrush0.Dispose();
    187.             TransparentBrush1.Dispose();
    188.             g.DrawString(AddText, font, b, Xpos, Ypos);
    189.             switch (FileExtensionName.ToLower())
    190.             {
    191.                 case "jpg":
    192.                 case "jpeg":
    193.                     image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
    194.                     break;
    195.                 case "gif":
    196.                     image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
    197.                     break;
    198.                 case "bmp":
    199.                     image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Bmp);
    200.                     break;
    201.                 case "png":
    202.                     image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png);
    203.                     break;
    204.             }
    205.             g.Dispose();
    206.             image.Save(paraNewsFileName);
    207.             image.Dispose();
    208.             Response.Clear();
    209.             if (File.Exists(paraOldFileName) == true)
    210.             {
    211.                 File.Delete(paraOldFileName);
    212.             }
    213.         }
    214.         private void CreateWeaterPicture(string paraOldFileName, string paraNewsFileName, string AddPicture, string FileExtensionName)
    215.         {
    216.             System.Drawing.Image image = System.Drawing.Image.FromFile(paraOldFileName);
    217.             System.Drawing.Image copyImage = System.Drawing.Image.FromFile(AddPicture);
    218.             ImageAttributes imageAttributes = new ImageAttributes();
    219.             ColorMap colorMap = new ColorMap();
    220.             colorMap.OldColor = Color.FromArgb(200, 0, 200, 0);
    221.             colorMap.NewColor = Color.FromArgb(0, 0, 0, 0);
    222.             ColorMap[] remapTable = { colorMap };
    223.             imageAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap);
    224.             float[][] colorMatrixElements = {
    225.                                                 new float[] {1.0f,  0.0f,  0.0f,  0.0f, 0.0f},
    226.                                                 new float[] {0.0f,  1.0f,  0.0f,  0.0f, 0.0f},
    227.                                                 new float[] {0.0f,  0.0f,  1.0f,  0.0f, 0.0f},
    228.                                                 new float[] {0.0f,  0.0f,  0.0f,  Model.Article.Setting.WaterMark_Transparency, 0.0f},
    229.                                                 new float[] {0.0f,  0.0f,  0.0f,  0.0f, 1.0f}
    230.                                             };
    231.             ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);
    232.             imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
    233.             Graphics g = Graphics.FromImage(image);
    234.             //PointF pt = new PointF(0, 0);
    235.             //System.Drawing.Brush TransparentBrush0 = new System.Drawing.SolidBrush(System.Drawing.Color.FromArgb(50, System.Drawing.Color.));
    236.             //System.Drawing.Brush TransparentBrush1 = new System.Drawing.SolidBrush(System.Drawing.Color.FromArgb(20, System.Drawing.Color.Black));
    237.             //g.DrawString(AddText, font, TransparentBrush0, pt.X, pt.Y + 1);
    238.             //g.DrawString(AddText, font, TransparentBrush0, pt.X + 1, pt.Y);
    239.             //g.DrawString(AddText, font, TransparentBrush1, pt.X + 1, pt.Y + 1);
    240.             //g.DrawString(AddText, font, TransparentBrush1, pt.X, pt.Y + 2);
    241.             //g.DrawString(AddText, font, TransparentBrush1, pt.X + 2, pt.Y);
    242.             //TransparentBrush0.Dispose();
    243.             //TransparentBrush1.Dispose();
    244.             //设定合成图像的质量
    245.             g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
    246.             //设置高质量插值法
    247.             g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    248.             //设置高质量,低速度呈现平滑程度
    249.             g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    250.             int xPos = image.Width - copyImage.Width - 10;
    251.             int yPos = image.Height - copyImage.Height - 10;
    252.             switch (Model.Article.Setting.WaterMark_Position)//==========从图片的左上角开始算起(0,0)
    253.             {
    254.                 case 1:
    255.                     xPos = 10;
    256.                     yPos = 10;
    257.                     break;
    258.                 case 2:
    259.                     xPos = image.Width - copyImage.Width - 10;
    260.                     yPos = 10;
    261.                     break;
    262.                 case 3:
    263.                     xPos = 10;
    264.                     yPos = image.Height - copyImage.Height - 10;
    265.                     break;
    266.                 case 4:
    267.                     xPos = image.Width - copyImage.Width - 10;
    268.                     yPos = image.Height - copyImage.Height - 10;
    269.                     break;
    270.             }
    271.             g.DrawImage(copyImage, new Rectangle(xPos, yPos, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel, imageAttributes);
    272.             switch (FileExtensionName.ToLower())
    273.             {
    274.                 case "jpg":
    275.                 case "jpeg":
    276.                     image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
    277.                     break;
    278.                 case "gif":
    279.                     image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
    280.                     break;
    281.                 case "bmp":
    282.                     image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Bmp);
    283.                     break;
    284.                 case "png":
    285.                     image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png);
    286.                     break;
    287.             }
    288.             g.Dispose();
    289.             image.Save(paraNewsFileName);
    290.             image.Dispose();
    291.             imageAttributes.Dispose();
    292.             Response.Clear();
    293.             if (File.Exists(paraOldFileName) == true)
    294.             {
    295.                 File.Delete(paraOldFileName);
    296.             }
    297.             // return paraNewsFileName;
    298.         }
    299.         protected bool IsValidFileType(string ExtName)
    300.         {
    301.             if (Model.Article.Setting.Upload_ContontFileStyle.Trim() == "")
    302.                 return true;
    303.             string[] AcceptedFileTypes = Model.Article.Setting.Upload_ContontFileStyle.Split(new char[] { '|' });
    304.             for (int i = 0; i < AcceptedFileTypes.Length; i++)
    305.             {
    306.                 if (ExtName.ToLower() == AcceptedFileTypes.ToLower())
    307.                 {
    308.                     return true;
    309.                 }
    310.             }
    311.             return false;
    312.         }
    313.     }
    314. }
    复制代码

    三、相应的aspx页面代码

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html>
    3. <head>
    4.   <title>FLASH 上传测试</title>
    5.   <meta http-equiv="content-type" content="text/html; charset=gb2312" />
    6.   <link href="../images/style.css" rel="stylesheet" type="text/css" />
    7.   <script language="javascript">AC_FL_RunContent = 0;</script>
    8.   <script src="../javascript/AC_RunActiveContent.js" language="javascript"></script>
    9.  
    10. </head>
    11. <body>
    12. <!--影片中使用的 URL-->
    13. <!--影片中使用的文本-->
    14. <!-- saved from url=(0013)about:internet -->
    15. <script language="javascript">
    16.     if (AC_FL_RunContent == 0) {
    17.         alert("此页需要 AC_RunActiveContent.js");
    18.     } else {
    19.         AC_FL_RunContent(
    20.             'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
    21.             'width', '400',
    22.             'height', '56',
    23.             'src', '../SWFUpload/SWFFileUpload',
    24.             'quality', 'high',
    25.             'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
    26.             'align', 'middle',
    27.             'play', 'true',
    28.             'loop', 'true',
    29.             'scale', 'showall',
    30.             'wmode', 'window',
    31.             'devicefont', 'false',
    32.             'id', 'SWFFileUpload',
    33.             'bgcolor', '#ffffff',
    34.             'name', 'SWFFileUpload',
    35.             'menu', 'true',
    36.             'allowFullScreen', 'false',
    37.             'allowScriptAccess','sameDomain',
    38.             'movie', '../SWFUpload/SWFFileUpload',
    39.             'salign', '',
    40.             'FlashVars','ComJsFun=UploadForEditor'
    41.             ); //end AC code
    42.     }
    43. //src和movie属性为Flash文件地址,请勿写.swf后缀名
    44. //FlashVars为给Flash设置的参数。
    45. </script>
    46. <noscript>
    47.     <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="400" height="56" id="SWFFileUpload" align="middle">
    48.     <param name="allowScriptAccess" value="sameDomain" />
    49.     <param name="allowFullScreen" value="false" />
    50.     <param name="movie" value="../SWFUpload/SWFFileUpload.swf" />
    51.     <param name="quality" value="high" />
    52.     <param name="bgcolor" value="#ffffff" />
    53.     <param name="FlashVars" value="ComJsFun=UploadForEditor"/>
    54.     <embed src="../SWFUpload/SWFFileUpload.swf" quality="high" bgcolor="#ffffff" width="400" height="56" name="SWFFileUpload" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
    55.     </object>
    56. </noscript>
    57. <div id="showInfo"></div>
    58. <script language="javascript" type="text/javascript">
    59. function UploadForEditor(Value){
    60.   alert(Value);
    61.   //var RSArr = Value.split("|");
    62.   //UploaFile(RSArr[0],RSArr[1],RSArr[2],RSArr[3],RSArr[4]);
    63. }
    64. </script>
    65. </body>
    66. </html>
    复制代码

    源码下载:附件: SWFFileUpload.rar (下载 665 次)

  • 相关阅读:
    SQL Server CHARINDEX和PATINDEX详解
    Delphi7控件包详解 (转)
    经历一次人际关系危机总结,改进
    2008年5月份目标和计划
    God bless 贝贝!
    开始新的生活~~~
    一切安好~~~
    Hadoop : “Moving Computation is Cheaper than Moving Data”
    改论文,不轻言放弃,力求准确,简洁
    杜绝拖拖拉拉《明日歌》
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/2742810.html
Copyright © 2011-2022 走看看