`
兩ting
  • 浏览: 78325 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

AS3上传文件

    博客分类:
  • AS
 
阅读更多

upload.as:

package 
{
 import flash.display.*;
 import flash.net.*;
 import flash.events.*;
 import flash.text.*;
 import flash.ui.*;
 import fl.controls.List;
 import fl.controls.ScrollBarDirection;
 import fl.controls.TileList;
 import fl.data.DataProvider;
 //网络应用
 import flash.net.URLRequest;
 import flash.net.URLRequestHeader;
    import flash.net.URLRequestMethod;

 public class Upload extends Sprite
 {
  var base_url:String = './';
  var upload_btn:Btn = new Btn;/////UPLOAD_BTN
  var pending_files_array:Array;
  var upload_details_array:Array;
  var upload_details_contain:TileList;
  var dp:Array;
  var frl:FileReferenceList = new FileReferenceList;
  var images_filter:FileFilter = new FileFilter("*.jpg, *.jpeg, *.gif, *.png", "*.jpg;*.jpeg;*.gif;*.png");
  var docs_filter:FileFilter = new FileFilter("*.txt, *.doc, *.docx, *.rtf", "*.txt;*.doc;*.docx;*.rtf");
  var zip_filter:FileFilter = new FileFilter("*.zip, *.rar", "*.zip;*.rar");
  var all_filter:FileFilter=new FileFilter("所有文件 *.*","*.*");
  //var header:URLRequestHeader = new URLRequestHeader("pragma", "no-cache");
  var uploadURL:URLRequest = new URLRequest(base_url + 'upload.php');
  //uploadURL.method = URLRequestMethod.POST;
  //uploadURL.requestHeaders.push(header);
  
  public function Upload()
  {
   ////隐藏默认菜单
   var contextmenu:ContextMenu = new ContextMenu;
   contextmenu.hideBuiltInItems();
   ////添加右键菜单
   var item:ContextMenuItem = new ContextMenuItem('&设计网');
   contextmenu.customItems.push(item);
   item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function(e:ContextMenuEvent)
   {
    ///URL定向
    navigateToURL(new URLRequest(base_url));
   });
   stage.align = StageAlign.TOP_LEFT;//顶端对齐
   stage.scaleMode = StageScaleMode.NO_SCALE;/////缩放模式
   addChild(upload_btn);/////
   upload_btn.buttonMode = true;
   upload_btn.addEventListener(MouseEvent.CLICK, uploadhandler);
   frl.addEventListener(Event.SELECT, selectedhandler);
   frl.addEventListener(Event.CANCEL, cancelhandler);
   stage.addEventListener(Event.RESIZE, resizehandler);
   resizehandler(null);
   contextMenu = contextmenu;
  }
  private function resizehandler(e:Event):void
  {
   ////舞台居中
   upload_btn.x = Math.floor((stage.stageWidth - upload_btn.width) / 2) + .5;
   upload_btn.y = Math.floor((stage.stageHeight - upload_btn.height) / 2) + .5;
  }
  private function uploadhandler(e:MouseEvent):void
  {
   frl.browse([images_filter, docs_filter, zip_filter,all_filter]);
  }
  private function cancelhandler(e:Event):void
  {
   ////
   stage.focus = null;
  }
  private function selectedhandler(e:Event):void
  {
   removeChild(upload_btn);///删除
   upload_details_contain = new TileList;
   dp = new Array;
   addChild(upload_details_contain);
   pending_files_array = new Array();
   upload_details_array = new Array();
   var fileReferenceList:FileReferenceList = e.target as FileReferenceList;
   var fileList:Array = fileReferenceList.fileList;
   for (var i:uint = 0; i < fileList.length; i++) {
    addPendingFile(fileList[i]);
   }
  }
  private function addPendingFile(file:FileReference):void
  {
   pending_files_array.push(file);
   ////上传进度条
   var udi:UploadDetailInfo = new UploadDetailInfo;
   upload_details_array.push(udi);
   dp.push({source:udi});
   upload_details_contain.dataProvider = new DataProvider(dp);
   upload_details_contain.direction = ScrollBarDirection.VERTICAL;////垂直方向显示游
   upload_details_contain.setStyle("contentPadding", 5);
   upload_details_contain.columnWidth = udi.width;
   upload_details_contain.rowHeight = udi.height + 20;
   upload_details_contain.setSize(udi.width, stage.stageHeight);
   if(dp.length * upload_details_contain.rowHeight < upload_details_contain.height){
    upload_details_contain.setSize(udi.width, dp.length * upload_details_contain.rowHeight);
   }
   upload_details_contain.move((stage.stageWidth - upload_details_contain.width) / 2, (stage.stageHeight - upload_details_contain.height) / 2);
   file.addEventListener(Event.OPEN, openHandler);
   file.addEventListener(Event.COMPLETE, completeHandler);
   file.addEventListener(ProgressEvent.PROGRESS, progressHandler);
   file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
   file.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
   file.upload(uploadURL,"Filedata");
  }
  
  private function getIndex(file:FileReference):int
  {
   //////
   ////多个文件名列表
   ////返回文件数
   for (var i:int; i < pending_files_array.length; i++) {
    if (pending_files_array[i].name == file.name) {
     return i;
    }
   }
   return i;
  }
  //////当上传完毕时,清空相关内容
  private function removePendingFile(file:FileReference):void
  {
   
   for (var i:uint; i < pending_files_array.length; i++) {
    if (pending_files_array[i].name == file.name) {
     pending_files_array.splice(i, 1);
     upload_details_array.splice(i, 1);
     if (pending_files_array.length == 0) {
      doOnComplete();
     }
     
     return;
    }
   }
  }
  private function doOnComplete():void
  {
   /////
   removeChild(upload_details_contain);
   ////保存文件列表
   var dp:DataProvider = new DataProvider;
   ///FRL,fileReferenceList
   for(var i=0; i < frl.fileList.length; i++){
    var n:String = FileReference(frl.fileList[i]).name;///对于每一个文件的文件名
    var l:String = base_url + 'uploads/' + n;
    /////对应文件名,上传服务器路径
    dp.addItem({label: n, data:l});
   }
   /////
   var list:List = new List;
   list.dataProvider = dp;
   //居中
   list.setSize(stage.stageWidth, stage.stageHeight);
   //数组长度*行高
   if(dp.length * list.rowHeight < list.height){
    list.setSize(stage.stageWidth, dp.length * list.rowHeight);
   }
   ///居中
   list.move((stage.stageWidth - list.width) / 2, (stage.stageHeight - list.height) / 2);
   addChild(list);
   list.addEventListener(Event.CHANGE, handler);
   function handler(e:Event):void
   {
    var dl:FileReference = new FileReference;
    downloadFile();
    ///下载文件
    function downloadFile():void
    {
     dl.download(new URLRequest(list.selectedItem.data));
    }
   }
   ///定义文本格式
   var tf:TextFormat = new TextFormat;
   tf.size = 12;
   var success:TextField = new TextField;
   success.height = 1;
   success.border=true;
   success.backgroundColor=0xcccccc;
   success.autoSize = TextFieldAutoSize.LEFT;
   success.text = '我还要传';
   success.textColor = 0xffffff;
   success.setTextFormat(tf);
   success.x = 0;
   success.y = 0;
   success.selectable = false;
   success.addEventListener(MouseEvent.CLICK, clickhandler);
   
   addChild(success);
   ///重新上传
   function clickhandler(e:MouseEvent):void
   {
    removeChild(list);
    removeChild(e.target as TextField);
    addChild(upload_btn);
   }
   
  }
  private function openHandler(event:Event):void
  {
   //开始上传
   var file:FileReference = FileReference(event.target);
   UploadDetailInfo(upload_details_array[getIndex(file)]).ready(file.name);
  }
  private function completeHandler(event:Event):void
  {
   ////上传完成
   var file:FileReference = FileReference(event.target);
   UploadDetailInfo(upload_details_array[getIndex(file)]).complete(file.name);
   removePendingFile(file);
  }
  private function progressHandler(event:ProgressEvent):void
  {
   ////上传进度
   var file:FileReference = FileReference(event.target);
   ////还少于10%时
   if(event.bytesLoaded / event.bytesTotal < .1){
    UploadDetailInfo(upload_details_array[getIndex(file)]).ready(file.name);
   } else {
    //显示进度
    UploadDetailInfo(upload_details_array[getIndex(file)]).updateinfo(file.name, event.bytesLoaded, event.bytesTotal);
   }
  }
  private function ioErrorHandler(event:Event):void
  {
   ///IOERROR处理
  }
  private function securityErrorHandler(event:Event):void
  
  {
   ///////
  }
 }
}

upload.php

<?php
$uploaddir = './uploads/';
$filename = $_FILES['Filedata']['name'];
$tmpname=$_FILES['Filedata']['tmp_name'];
$fp=fopen("myfile.txt","w+");
fwrite($fp,$filename);
fwrite($fp,$tmpname);
fclose($fp);

$uploadfile = $uploaddir . $filename;
$uploadfile = iconv('utf-8', 'gb2312', $uploadfile);
move_uploaded_file($tmpname, $uploadfile);
?>

uploaddetaildata.as

package
{
 import flash.display.*;
 import flash.text.*;
 
 public class UploadDetailInfo extends Sprite
 {
  public function UploadDetailInfo()
  {
   ///////
   _txt.autoSize = TextFieldAutoSize.LEFT;
   _mc.scaleX = 0;
   ///设置遮罩
   _mc.mask = _mask;
  }
  public function ready(n):void
  {
   /////准备上传文件名
   _txt.text = '准备上传:' + n;
   _txt.textColor = 0x666666;
  }
  public function updateinfo(n,b,t):void
  
  {
   ///上传进度(总字节,上传字节,文件名)
   _txt.text = '正在上传:' + n;
   _txt.textColor = 0xff6600;
   _mc.scaleX = b/t;
  }
  public function complete(n):void
  {
   _txt.text = '上传完成:' + n;
   _txt.textColor = 0x0066cc;
   _mask.stop();
  }

 }
}

分享到:
评论

相关推荐

    as3 文件上传

    socket实现的文件上传,带上传的进度条。只是as客户端代码,不包括服务端文件接受处理代码。

    as3带进度条上传实例

    该示例代码主要实现了通过Socket连接服务器并上传文件的功能,同时在上传过程中显示文件上传进度。项目中涉及的主要组件包括:Socket连接管理、文件读取与上传逻辑、进度条显示等。 #### 二、关键组件及功能 **1. ...

    AS3头像上传

    在实际应用中,要注意安全性问题,比如限制上传文件的类型和大小,防止恶意文件上传。此外,可以考虑使用异步处理,提高用户体验。 总结: 通过以上步骤,你可以使用ActionScript 3实现在Flash应用中让用户选择本地...

    flash AS3上传预览图片

    总结来说,实现“Flash AS3上传预览图片”功能,需要掌握ActionScript 3.0编程,理解Flash的文件处理和事件模型,以及如何利用BitmapData和Bitmap对象处理图像。通过分析提供的源码和项目文件,开发者可以学习到这些...

    Flex+ASP.NET上传文件

    Flex是Adobe公司开发的一种富互联网应用(RIA)框架,它主要使用ActionScript 3(AS3)编程语言,用于创建交互式的、具有丰富图形用户界面的Web应用程序。ASP.NET则是微软开发的一个Web应用程序框架,主要用于构建...

    上传文件大全sql语句将 上传是时间作为上传文件的名字

    然而,给定的标题和描述中提到的“上传文件大全SQL语句”,似乎与上下文不符,因为SQL语句主要用于数据库操作,并不是用于处理文件上传逻辑。但在某些情况下,如果系统设计中包含了基于时间戳的文件名生成和数据库...

    ASP.NET通过HTML的上传文件标签来上传文件

    这篇博客文章“ASP.NET通过HTML的上传文件标签来上传文件”将引导我们了解如何在ASP.NET环境中实现文件上传功能。 首先,HTML中的`&lt;input type="file"&gt;`标签是用于让用户选择本地文件的关键。在ASP.NET页面中,我们...

    flash as3头像上传支持图片和拍照asp

    总的来说,这个项目提供了一个完整的解决方案,涵盖了前端Flash AS3的头像上传和拍照功能,以及后台ASP的文件处理。通过这种方式,用户可以方便地上传自己的头像,无论是选择本地图片还是即时拍摄,都能轻松完成。

    VB上传本地文件到服务器

    3. **服务器端接口**:文件上传通常需要服务器端的支持。在提供的文件列表中,`FileUpdate.php`表明服务器端可能使用PHP来处理文件。在PHP中,`$_FILES`全局变量用于接收上传的文件信息。服务器端代码会检查文件大小...

    C#实现HTTP上传文件的方法

    在C#编程中,HTTP上传文件是常见的网络通信任务,特别是在Web应用开发中。通过HTTP协议,客户端(通常是用户浏览器或应用程序)可以将文件发送到服务器进行存储、处理或其他操作。这里我们将详细讨论如何使用C#实现...

    Flash as3.0 批量上传图片

    3. **上传文件**:遍历FileReferenceList,对每个FileReference调用`upload()`方法,传入HTTP请求的URL(如imgupload.ashx)以及可能的POST参数。 4. **处理上传进度**:监听`progress`事件,以更新上传进度条或提供...

    c# 上传大文件

    这些框架提供了`HttpPostedFileBase`类,用于处理来自HTTP请求的上传文件。在控制器中,我们可以通过`Request.Files`获取上传的文件,并通过`SaveAs()`方法保存到服务器的指定位置。 对于断续上传,我们需要在...

    文件上传,多文件上传案例

    3. **并发控制**:如果预期会有大量用户同时上传文件,需要考虑并发控制策略,以保证系统的稳定性和性能。 #### 四、总结 通过上述介绍,我们可以看到使用C#实现文件上传功能并不复杂。关键在于正确配置前端表单...

    C#多文件上传

    3. **写入权限**:为了确保上传文件能够成功保存至服务器,应用程序需要具备目标目录的写入权限。这可以通过为运行应用程序的账户显式授予权限或提升应用程序的信任级别实现。然而,提升信任级别可能会增加安全风险...

    delphi做的文件上传下载服务器端

    标题 "delphi做的文件上传下载服务器端" 描述了一个使用Delphi编程语言开发的服务器程序,该程序专门设计用于处理文件的上传和下载功能。在IT领域,这样的系统通常涉及网络编程、多线程和并发处理,以确保能有效地...

    C#上传文件返回文件名称

    3. **Multipart/form-data**:为了上传文件,需要设置请求头的`Content-Type`为`multipart/form-data`。这样可以在单个请求中发送多个部分,每个部分可以是不同的数据类型,包括文件。 4. **ASP.NET Web API或MVC**...

    MVC3 文件上传

    在MVC3应用中,首先我们需要创建一个模型类来承载上传文件的信息。这个模型通常包含一个属性,如`HttpPostedFileBase`类型的`File`,用于接收上传的文件。例如: ```csharp public class UploadModel { public ...

    web页面多选上传文件的实现(浏览器-打开文件-可选多个文件来上传).源代码

    在Web开发中,用户往往需要上传文件到服务器,如图片、文档等。传统的文件上传方式通常只允许用户选择一个文件,但随着技术的发展,现在我们可以实现多选文件上传功能,让用户能够一次性上传多个文件,极大地提高了...

    通过SqlServer向数据库服务器上传文件

    在SQL Server中上传文件,除了FILESTREAM,还可以使用VARBINARY(MAX)类型存储文件内容,但这种方式不直接利用文件系统,可能会对性能产生影响。总的来说,FILESTREAM是SQL Server提供的一种高效、灵活的文件存储解决...

    上传文件控件简介

    在ASP.NET中,上传文件控件是Web开发中不可或缺的一部分,它允许用户从他们的本地计算机选择文件并将其发送到服务器。本篇文章将深入探讨“上传文件控件”,以`FileUpload`为例,来理解它的基本功能、使用方法以及在...

Global site tag (gtag.js) - Google Analytics