zoukankan      html  css  js  c++  java
  • flash 大文件上传

    引用:http://www.pin5i.com/showtopic-23382.html

    最近在做大文件上传项目时碰到了很多问题。基于.net的大文件上传组件网上是大把的有。

    但这些组件基本上都是基于HttpModule模式的,大部分都存在一个致命的问题:严重消耗内存。

    最后没办法,只好采用Flash的FileReference模式去上传。具体我也不是很明白,大家可自己研究。

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

    一、CS相应源码如下:
    import flash.net.FileReference;
    import flash.net.URLRequest;
    import flash.net.FileFilter;
    import flash.display.Sprite;
    import flash.events.*;

    var fileRef = new FileReference();
    var fileListener = new Object();

    var totalBytes:Number = 0;
    var uploadedBytes:Number = 0;

    //从外部获取也许上传的文件类型
    var acceptFileType:String = getFlashVars("acceptFileType");
    //设置上传完毕后执行的js脚本
    var comJsFun:String=getFlashVars("ComJsFun");
    //this.tbFilePath.text = comJsFun;
    //
    var uploadURL:URLRequest = new URLRequest();
    var xmlRequest:URLRequest = new URLRequest();
    var xmlLoader:URLLoader = new URLLoader();

    //初始化系统
    function init() {
    this.mcWaterStyle.visible = false;
    this.mcFilePlayer.visible = false;
    this.progressBar.visible = false;

    //设置按钮文字大小,默认的字体和大小有点难看。
    var myFormat = new TextFormat();
    myFormat.size = 12;
    this.btBrowser.setStyle("textFormat", myFormat);
    this.btUpload.setStyle("textFormat", myFormat);
    this.tbFilePath.setStyle("textFormat", myFormat);

    this.mcWaterStyle.style0.setStyle("textFormat", myFormat);
    this.mcWaterStyle.style1.setStyle("textFormat", myFormat);
    this.mcWaterStyle.style2.setStyle("textFormat", myFormat);
    this.uploadInfo.setStyle("textFormat", myFormat);

    //如果从FlashVars获取的参数acceptFileType(限定上传文件类型)无值,那么访问相应的XML(上传文件类型配置)
    if(acceptFileType==""){
    //从外部获取上传附加的文件类型。
    xmlRequest = new URLRequest("http://www.cnblogs.com/XML/Setting_Article.xml");
    xmlLoader.load(xmlRequest);
    xmlLoader.addEventListener(Event.COMPLETE,loaderHandler);
    }
    }

    init();

    //按钮事件
    this.btBrowser.addEventListener(MouseEvent.CLICK, browseHandler);
    this.btUpload.addEventListener(MouseEvent.CLICK, UploadHandler);

    fileRef.addEventListener(Event.SELECT,selectHandler);//选择文件
    fileRef.addEventListener(Event.CANCEL, cancelHandler);//上传过程中取消事件
    fileRef.addEventListener(Event.OPEN, openHandler);//开始上传事件
    fileRef.addEventListener(Event.COMPLETE, completeHandler);//上传完毕事件
    fileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadCompleteDataHandler)//上传数据完毕事件,有点迷惑Event.COMPLETE跟DataEvent.UPLOAD_COMPLETE_DATA的区别
    fileRef.addEventListener(ProgressEvent.PROGRESS, progressHandler);//上传过程事件,相应的进度条代码在这里了

    //监听上传过程可能出错的事件
    fileRef.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
    fileRef.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
    fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);


    //浏览按钮事件
    function browseHandler(event:MouseEvent):void {
    fileRef.browse(browseGetTypes());
    }
    function browseGetTypes():Array {
    var allTypes:Array = new Array(browseGetFileTypeFilter());
    return allTypes;
    }

    function browseGetFileTypeFilter():FileFilter {

    if(acceptFileType!=""){
    var arr = acceptFileType.split("|");
    var FileExtension = "";
    for(var i=0;i<arr.length;i++){
    if (arr == "")
    continue;
    if(i==0)
    FileExtension = "*."+arr;
    else
    FileExtension = FileExtension+";*."+arr;
    }
    return new FileFilter("文件格式("+FileExtension+")", ""+FileExtension+"");
    }else{
    return new FileFilter("所有文件(*.*)","*.*");
    }

    //return new FileFilter("所有文件(*.*)","*.*");
    }

    //加载上传配置事件
    function loaderHandler(event:Event):void {
    var myXML:XML = new XML(xmlLoader.data);
    //myXML = XML();
    acceptFileType = myXML.child("Upload").ContontFileStyle;
    trace("--"+myXML.child("Upload").ContontFileStyle+"--");
    if(this.uploadInfo.text=="")
    this.uploadInfo.text = "允许的格式:"+myXML.child("Upload").ContontFileStyle;
    }

    //选择文件事件
    function selectHandler(event:Event):void{
    this.uploadInfo.text = "";
    this.mcWaterStyle.visible = false;
    this.mcFilePlayer.visible = false;

    if (fileRef.size > 0){
    totalBytes = fileRef.size;
    this.tbFilePath.text = fileRef.name+ "[" + this.getSizeType(totalBytes) + "]";
    var fileExtName = fileRef.name.substring(fileRef.name.lastIndexOf(".")+1);
    switch(fileExtName.toLowerCase()){
    case "jpg":
    case "jpeg":
    case "gif":
    case "bmp":
    this.mcWaterStyle.visible = true;
    break;
    case "flv":
    this.mcFilePlayer.visible = true;
    this.mcFilePlayer.mcWidth.text = 410;
    this.mcFilePlayer.mcHeight.text = 370;
    break;
    case "swf":
    this.mcFilePlayer.visible = true;
    this.mcFilePlayer.mcWidth.text = 550;
    this.mcFilePlayer.mcHeight.text = 400;
    break;
    case "rm":
    case "rmvb":
    case "mp3":
    case "avi":
    case "mpg":
    case "mpeg":
    case "asf":
    case "wmv":
    case "wma":
    this.mcFilePlayer.visible = true;
    this.mcFilePlayer.mcWidth.text = 550;
    this.mcFilePlayer.mcHeight.text = 400;
    break;
    default:
    this.mcWaterStyle.visible = false;
    this.mcFilePlayer.visible = false;
    break;
    }
    }else{
    this.uploadInfo.text = "错误:您没有选择文件!";
    }
    }

    //上传过程中取消
    function cancelHandler(event:Event):void{
    this.progressBar.visible = false;
    };

    //当上载或下载操作开始时
    function openHandler(event:Event):void{
    this.tbFilePath.visible = false;
    this.mcWaterStyle.visible = false;
    this.mcFilePlayer.visible = false;
    this.btBrowser.visible = false;
    this.btUpload.label = "取消";
    this.progressBar.visible = true;
    };

    //点击伤
    function UploadHandler(event:MouseEvent):void{
    if (this.btUpload.label=="上传"){
    var WaterMarkStyleP:String = "";
    if(this.mcWaterStyle.style0.selected == true)
    WaterMarkStyleP = "0";
    else if(this.mcWaterStyle.style1.selected == true)
    WaterMarkStyleP = "1";
    else if(this.mcWaterStyle.style2.selected == true)
    WaterMarkStyleP = "2";

    var mcFilePlayerP:String="&width="+this.mcFilePlayer.mcWidth;
    mcFilePlayerP += "&height="+this.mcFilePlayer.mcHeigth;

    if(this.mcFilePlayer.mcAutoYes.selected == true)
    mcFilePlayerP += "&auto=true";
    else if(this.mcFilePlayer.mcAutoNo.selected == true)
    mcFilePlayerP += "&auto=false";

    uploadURL.url="Upload_File_SWF.aspx?WaterMarkStyle="+WaterMarkStyleP+mcFilePlayerP;
    fileRef.upload(uploadURL);//此为采用aspx默认方式进行上传的文件地址。如:Upload_File_SWF.aspx此页面我在上传完毕后,直接进行Response.Write("true");那么Flash可在uploadCompleteDataHandler后可后去到true这个数据。以便你进行操作。
    }else if(this.btUpload.label=="取消"){
    this.tbFilePath.visible = true;
    this.mcWaterStyle.visible = false;
    this.mcFilePlayer.visible = false;
    this.btBrowser.visible = true;
    this.btUpload.label = "上传";
    this.progressBar.visible = false;
    this.uploadInfo.text="";
    }else if(this.btUpload.label=="重新上传"){
    this.tbFilePath.visible = true;
    this.mcWaterStyle.visible = false;
    this.mcFilePlayer.visible = false;
    this.btBrowser.visible = true;
    this.btUpload.label = "上传";
    this.progressBar.visible = false;
    }
    }

    //在文件上载或下载操作期间定期调用
    function progressHandler(event:ProgressEvent):void{
    //var fileRef:FileReference = FileReference(event.target);
    if(event.bytesLoaded==event.bytesTotal){
    this.uploadInfo.text= "正在转移数据,请稍后--"+getSizeType(event.bytesLoaded)+"/"+getSizeType(event.bytesTotal);
    }else{
    this.progressBar.mcMask.width = (event.bytesLoaded/event.bytesTotal)*this.progressBar.mcLoaded.width;
    this.uploadInfo.text="上传文件中,请等待--"+getSizeType(event.bytesLoaded)+"/"+getSizeType(event.bytesTotal);
    }
    }

    function completeHandler(event:Event):void {
    //trace("completeHandler: " + event);
    this.tbFilePath.visible = true;
    this.tbFilePath.text = "";
    this.mcWaterStyle.visible = false;
    this.mcFilePlayer.visible = false;
    this.btBrowser.visible = true;
    this.btUpload.label = "上传";
    this.progressBar.visible = false;
    //this.uploadInfo.text = "上传成功!";
    }

    function uploadCompleteDataHandler(event:DataEvent):void {
    if(event.data.indexOf("|")!=-1){
    var fileInfoArr = event.data.split("|");
    if(fileInfoArr[0].toLowerCase()=="true"){
    this.uploadInfo.text = "上传成功:"+fileInfoArr[1]+"!";
    if(comJsFun!=""){
    //ExternalInterface.call("UploadForEditor","hh");
    ExternalInterface.call("UploadForEditor",event.data.replace("true|",""));
    //this.tbFilePath.text = event.data;
    }
    }else{
    this.uploadInfo.text = "上传失败:"+EncodeUtf8(fileInfoArr[1])+"!";
    }
    }



    trace("uploadCompleteData: " + event.data);
    }

    //错误事件
    function httpStatusHandler(event:HTTPStatusEvent):void {
    trace("httpStatusHandler: " + event);
    this.mcWaterStyle.visible = false;
    this.mcFilePlayer.visible = false;
    this.uploadInfo.text="HTTP错误: " + event;
    }
    function ioErrorHandler(event:IOErrorEvent):void {
    trace("ioErrorHandler: " + event);
    this.mcWaterStyle.visible = false;
    this.mcFilePlayer.visible = false;
    this.uploadInfo.text="IO错误: " + event;
    }
    function securityErrorHandler(event:SecurityErrorEvent):void {
    trace("openHandler: " + event);
    this.mcWaterStyle.visible = false;
    this.mcFilePlayer.visible = false;
    this.uploadInfo.text="IO安全设置错误: " + event;
    }

    /**//*--------------------以下为常用函数-------------
    ---------------------------------------------*/
    //处理文件大小表示方法
    function getSizeType(s)
    {
    var danwei = ["Byte","KB","MB","GB" ];
    var d = 0;
    while ( s >= 900 )
    {
    s = Math.round(s*100/1024)/100;
    d++;
    }
    return s+danwei[d];
    }

    function getFlashVars(parName){
    var parValue:String=stage.loaderInfo.parameters[parName];
    if(parValue==null)
    return "";
    else
    return parValue;
    }

    //转换乱码
    function EncodeUtf8(str : String):String {
    var oriByteArr : ByteArray = new ByteArray();
    oriByteArr.writeUTFBytes(str);
    var tempByteArr : ByteArray = new ByteArray();
    for (var i = 0; i<oriByteArr.length; i++) {
    if (oriByteArr == 194) {
    tempByteArr.writeByte(oriByteArr[i+1]);
    i++;
    } else if (oriByteArr == 195) {
    tempByteArr.writeByte(oriByteArr[i+1] + 64);
    i++;
    } else {
    tempByteArr.writeByte(oriByteArr);
    }
    }
    tempByteArr.position = 0;
    return tempByteArr.readMultiByte(tempByteArr.bytesAvailable,"chinese");
    //return tempByteArr.readMultiByte(tempByteArr.bytesAvailable,"chinese");
    }
    复制代码
    二、相应的上传文件代码(.net)
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.IO;
    using System.Drawing;
    using System.Drawing.Imaging;


    namespace TT.WebManager.Web.Admin.Article
    {
    public partial class Upload_File_SWF : System.Web.UI.Page
    {
    string AppPath = "";

    string FileURL = "";//文件网络地址
    string FileURL2 = "";//文件网络地址,如果加了水印
    string FileAppPath = "";
    string FileAppPath2 = "";

    string sFilePathName = "";
    string sFileName = "";
    int FileSize = 0;

    string FileExtName = "";

    int WaterMarkStyle = 0;
    string FileAuto = "true";
    int FileWidth = 0;
    int FileHeigth = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
    TT.WebManager.BLL.Setting bll = new TT.WebManager.BLL.Setting();
    bll.Init(false);

    AppPath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath;

    WaterMarkStyle = Methods.Req.GetInt("WaterMarkStyle", 0);
    FileWidth = Methods.Req.GetInt("Width",550);
    FileHeigth = Methods.Req.GetInt("Heigth", 400);
    FileAuto = Methods.Req.GetString("Auto");

    try
    {
    HttpPostedFile postedFile = Request.Files["Filedata"];
    sFilePathName = postedFile.FileName;
    FileSize = postedFile.ContentLength; //===========获取文件的大小

    if (FileSize <= 0)
    {
    Response.Clear();
    Response.Write("false|您没有选择文件!");
    Response.End();
    }
    else
    {
    sFileName = sFilePathName.Substring(sFilePathName.LastIndexOf("\\") + 1);
    FileExtName = sFilePathName.Substring(sFilePathName.LastIndexOf(".") + 1);
    if (IsValidFileType(FileExtName) == false)
    {
    Response.Clear();
    Response.Write("false|系统禁止上传此格式的文件!");
    Response.End();
    }
    else
    {
    GotoUploadFile(postedFile);
    }
    }
    }
    catch { }

    }

    protected void GotoUploadFile(HttpPostedFile postedFile)
    {
    string NewFileName = DateTime.Now.ToString("yyyyMMddhhmmss") + FileSize + "." + FileExtName;
    string NewFileName2 = DateTime.Now.ToString("yyyyMMddhhmmss") + FileSize + "_1." + FileExtName;
    string NewFilePath = "";
    if (Model.Article.Setting.Upload_SortFile == true)
    {
    if (Model.Article.Setting.Upload_FolderStyle != "")
    {
    FileURL = Model.Article.Setting.Upload_Prefix + Model.Article.Setting.Upload_Folder + "/" + FileExtName + "/" + DateTime.Now.ToString(Model.Article.Setting.Upload_FolderStyle) + "/" + NewFileName;
    FileURL2 = Model.Article.Setting.Upload_Prefix + Model.Article.Setting.Upload_Folder + "/" + FileExtName + "/" + DateTime.Now.ToString(Model.Article.Setting.Upload_FolderStyle) + "/" + NewFileName2;
    NewFilePath = AppPath + Model.Article.Setting.Upload_Folder.Replace("/", "\\") + "\\" + FileExtName + "\\" + DateTime.Now.ToString(Model.Article.Setting.Upload_FolderStyle).Replace("/", "\\");
    }
    else
    {
    FileURL = Model.Article.Setting.Upload_Prefix + Model.Article.Setting.Upload_Folder + "/" + FileExtName + "/" + NewFileName;
    FileURL2 = Model.Article.Setting.Upload_Prefix + Model.Article.Setting.Upload_Folder + "/" + FileExtName + "/" + NewFileName2;
    NewFilePath = AppPath + Model.Article.Setting.Upload_Folder.Replace("/", "\\") + "\\" + FileExtName;
    }

    }
    else
    {
    if (Model.Article.Setting.Upload_FolderStyle != "")
    {
    FileURL = Model.Article.Setting.Upload_Prefix + Model.Article.Setting.Upload_Folder + "/" + DateTime.Now.ToString(Model.Article.Setting.Upload_FolderStyle) + "/" + NewFileName;
    FileURL2 = Model.Article.Setting.Upload_Prefix + Model.Article.Setting.Upload_Folder + "/" + DateTime.Now.ToString(Model.Article.Setting.Upload_FolderStyle) + "/" + NewFileName2;
    NewFilePath = AppPath + Model.Article.Setting.Upload_Folder.Replace("/", "\\") + "\\" + DateTime.Now.ToString(Model.Article.Setting.Upload_FolderStyle).Replace("/", "\\");
    }
    else
    {
    FileURL = Model.Article.Setting.Upload_Prefix + Model.Article.Setting.Upload_Folder + "/" + NewFileName;
    FileURL2 = Model.Article.Setting.Upload_Prefix + Model.Article.Setting.Upload_Folder + "/" + NewFileName2;
    NewFilePath = AppPath + Model.Article.Setting.Upload_Folder.Replace("/", "\\");
    }
    }

    TT.WebManager.Methods.IIOO.CreateDirectory(NewFilePath);

    FileAppPath = NewFilePath + "\\" + NewFileName;
    FileAppPath2 = NewFilePath + "\\" + NewFileName2;

    postedFile.SaveAs(FileAppPath);
    switch (FileExtName.ToLower())
    {
    case "jpg":
    case "jpeg":
    case "gif":
    case "bmp":
    case "png":
    //==========生成水印=============
    switch (WaterMarkStyle)
    {
    case 1:
    CreateWeaterText(FileAppPath, FileAppPath2, Model.Article.Setting.WaterMark_Text, FileExtName);
    FileURL = FileURL2;
    break;
    case 2:
    CreateWeaterPicture(FileAppPath, FileAppPath2, Server.MapPath(Model.Article.Setting.WaterMark_Picture), FileExtName);
    FileURL = FileURL2;
    break;
    default:
    break;
    }
    break;
    }

    string ReturnString = sFileName + "|" + FileURL + "|" + FileWidth + "|" + FileHeigth + "|" + FileAuto;

    Response.Clear();
    Response.Write("true|"+ReturnString);
    Response.End();
    }

    private void CreateWeaterText(string paraOldFileName, string paraNewsFileName, string AddText, string FileExtensionName)
    {
    System.Drawing.Image image = System.Drawing.Image.FromFile(paraOldFileName);
    System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);

    //文字抗锯齿
    g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;

    g.DrawImage(image, 0, 0, image.Width, image.Height);
    //Font font = new Font("黑体", 14, FontStyle.Bold);
    //Brush b = new SolidBrush(Color.Yellow);
    Font font = new Font(Model.Article.Setting.WaterMark_FontFamily, Model.Article.Setting.WaterMark_FontSize, FontStyle.Bold);
    Brush b = new SolidBrush(Methods.TypeParse.StrToColor(Model.Article.Setting.WaterMark_FontColor));


    int Xpos = 0;
    int Ypos = 0;
    SizeF crsize = new SizeF();
    crsize = g.MeasureString(AddText, font);
    int crsize_With = Convert.ToInt32(crsize.Width);
    int crsize_Height = Convert.ToInt32(crsize.Height);

    int WaterMark_xPos = 10;
    int WaterMark_yPos = 10;

    switch (Model.Article.Setting.WaterMark_Position)//==========从图片的左上角开始算起(0,0)
    {
    case 1:
    Xpos = WaterMark_xPos;
    Ypos = WaterMark_yPos;
    break;
    case 2:
    Xpos = image.Width - (crsize_With + WaterMark_xPos);
    Ypos = WaterMark_yPos;
    break;
    case 3:
    Xpos = WaterMark_xPos;
    Ypos = image.Height - (crsize_Height + WaterMark_yPos);
    break;
    case 4:
    Xpos = image.Width - (crsize_With + WaterMark_xPos);
    Ypos = image.Height - (crsize_Height + WaterMark_yPos);
    break;
    }

    //画阴影
    PointF pt = new PointF(0, 0);
    System.Drawing.Brush TransparentBrush0 = new System.Drawing.SolidBrush(System.Drawing.Color.FromArgb(50, System.Drawing.Color.Black));
    System.Drawing.Brush TransparentBrush1 = new System.Drawing.SolidBrush(System.Drawing.Color.FromArgb(20, System.Drawing.Color.Black));

    g.DrawString(AddText, font, TransparentBrush0, Xpos, Ypos + 1);
    g.DrawString(AddText, font, TransparentBrush0, Xpos + 1, Ypos);
    g.DrawString(AddText, font, TransparentBrush1, Xpos + 1, Ypos + 1);
    g.DrawString(AddText, font, TransparentBrush1, Xpos, Ypos + 2);
    g.DrawString(AddText, font, TransparentBrush1, Xpos + 2, Ypos);

    TransparentBrush0.Dispose();
    TransparentBrush1.Dispose();


    g.DrawString(AddText, font, b, Xpos, Ypos);

    switch (FileExtensionName.ToLower())
    {
    case "jpg":
    case "jpeg":
    image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
    break;
    case "gif":
    image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
    break;
    case "bmp":
    image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Bmp);
    break;
    case "png":
    image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png);
    break;
    }
    g.Dispose();

    image.Save(paraNewsFileName);
    image.Dispose();
    Response.Clear();

    if (File.Exists(paraOldFileName) == true)
    {
    File.Delete(paraOldFileName);
    }
    }

    private void CreateWeaterPicture(string paraOldFileName, string paraNewsFileName, string AddPicture, string FileExtensionName)
    {
    System.Drawing.Image image = System.Drawing.Image.FromFile(paraOldFileName);
    System.Drawing.Image copyImage = System.Drawing.Image.FromFile(AddPicture);

    ImageAttributes imageAttributes = new ImageAttributes();
    ColorMap colorMap = new ColorMap();
    colorMap.OldColor = Color.FromArgb(200, 0, 200, 0);
    colorMap.NewColor = Color.FromArgb(0, 0, 0, 0);
    ColorMap[] remapTable = { colorMap };
    imageAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap);
    float[][] colorMatrixElements = {
    new float[] {1.0f, 0.0f, 0.0f, 0.0f, 0.0f},
    new float[] {0.0f, 1.0f, 0.0f, 0.0f, 0.0f},
    new float[] {0.0f, 0.0f, 1.0f, 0.0f, 0.0f},
    new float[] {0.0f, 0.0f, 0.0f, Model.Article.Setting.WaterMark_Transparency, 0.0f},
    new float[] {0.0f, 0.0f, 0.0f, 0.0f, 1.0f}
    };
    ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);
    imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);


    Graphics g = Graphics.FromImage(image);


    //PointF pt = new PointF(0, 0);
    //System.Drawing.Brush TransparentBrush0 = new System.Drawing.SolidBrush(System.Drawing.Color.FromArgb(50, System.Drawing.Color.));
    //System.Drawing.Brush TransparentBrush1 = new System.Drawing.SolidBrush(System.Drawing.Color.FromArgb(20, System.Drawing.Color.Black));

    //g.DrawString(AddText, font, TransparentBrush0, pt.X, pt.Y + 1);

    //g.DrawString(AddText, font, TransparentBrush0, pt.X + 1, pt.Y);

    //g.DrawString(AddText, font, TransparentBrush1, pt.X + 1, pt.Y + 1);

    //g.DrawString(AddText, font, TransparentBrush1, pt.X, pt.Y + 2);

    //g.DrawString(AddText, font, TransparentBrush1, pt.X + 2, pt.Y);

    //TransparentBrush0.Dispose();

    //TransparentBrush1.Dispose();


    //设定合成图像的质量
    g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
    //设置高质量插值法
    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    //设置高质量,低速度呈现平滑程度
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

    int xPos = image.Width - copyImage.Width - 10;
    int yPos = image.Height - copyImage.Height - 10;

    switch (Model.Article.Setting.WaterMark_Position)//==========从图片的左上角开始算起(0,0)
    {
    case 1:
    xPos = 10;
    yPos = 10;
    break;
    case 2:
    xPos = image.Width - copyImage.Width - 10;
    yPos = 10;
    break;
    case 3:
    xPos = 10;
    yPos = image.Height - copyImage.Height - 10;
    break;
    case 4:
    xPos = image.Width - copyImage.Width - 10;
    yPos = image.Height - copyImage.Height - 10;
    break;
    }

    g.DrawImage(copyImage, new Rectangle(xPos, yPos, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel, imageAttributes);

    switch (FileExtensionName.ToLower())
    {
    case "jpg":
    case "jpeg":
    image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
    break;
    case "gif":
    image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
    break;
    case "bmp":
    image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Bmp);
    break;
    case "png":
    image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png);
    break;
    }
    g.Dispose();

    image.Save(paraNewsFileName);
    image.Dispose();
    imageAttributes.Dispose();

    Response.Clear();

    if (File.Exists(paraOldFileName) == true)
    {
    File.Delete(paraOldFileName);
    }

    // return paraNewsFileName;
    }

    protected bool IsValidFileType(string ExtName)
    {
    if (Model.Article.Setting.Upload_ContontFileStyle.Trim() == "")
    return true;

    string[] AcceptedFileTypes = Model.Article.Setting.Upload_ContontFileStyle.Split(new char[] { '|' });
    for (int i = 0; i < AcceptedFileTypes.Length; i++)
    {
    if (ExtName.ToLower() == AcceptedFileTypes.ToLower())
    {
    return true;
    }
    }
    return false;
    }
    }
    }
    复制代码
    三、相应的aspx页面代码
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html>
    <head>
    <title>FLASH 上传测试</title>
    <meta http-equiv="content-type" content="text/html; charset=gb2312" />
    <link href="../images/style.css" rel="stylesheet" type="text/css" />
    <script language="javascript">AC_FL_RunContent = 0;</script>
    <script src="../javascript/AC_RunActiveContent.js" language="javascript"></script>

    </head>
    <body>

    <!--影片中使用的 URL-->
    <!--影片中使用的文本-->
    <!-- saved from url=(0013)about:internet -->
    <script language="javascript">
    if (AC_FL_RunContent == 0) {
    alert("此页需要 AC_RunActiveContent.js");
    } else {
    AC_FL_RunContent(
    'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
    'width', '400',
    'height', '56',
    'src', '../SWFUpload/SWFFileUpload',
    'quality', 'high',
    'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
    'align', 'middle',
    'play', 'true',
    'loop', 'true',
    'scale', 'showall',
    'wmode', 'window',
    'devicefont', 'false',
    'id', 'SWFFileUpload',
    'bgcolor', '#ffffff',
    'name', 'SWFFileUpload',
    'menu', 'true',
    'allowFullScreen', 'false',
    'allowScriptAccess','sameDomain',
    'movie', '../SWFUpload/SWFFileUpload',
    'salign', '',
    'FlashVars','ComJsFun=UploadForEditor'
    ); //end AC code
    }
    //src和movie属性为Flash文件地址,请勿写.swf后缀名
    //FlashVars为给Flash设置的参数。
    </script>

    <noscript>
    <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">
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="allowFullScreen" value="false" />
    <param name="movie" value="../SWFUpload/SWFFileUpload.swf" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#ffffff" />
    <param name="FlashVars" value="ComJsFun=UploadForEditor"/>
    <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" />
    </object>
    </noscript>

    <div id="showInfo"></div>


    <script language="javascript" type="text/javascript">
    function UploadForEditor(Value){
    alert(Value);
    //var RSArr = Value.split("|");
    //UploaFile(RSArr[0],RSArr[1],RSArr[2],RSArr[3],RSArr[4]);
    }


    </script>
    </body>
    </html>
    复制代码
    源码下载:附件: SWFFileUpload.rar (下载 746 次)

  • 相关阅读:
    数组
    对象
    js继承
    js原型原型链
    es6(初级)
    canvas背景
    Angular.js进阶
    Angular.js-2入门
    angular.js-1初识
    js之广告
  • 原文地址:https://www.cnblogs.com/sode/p/2844725.html
Copyright © 2011-2022 走看看