本文使用一个 demo 来演示如何使用 Flex 和 Java servlets 上传一个任意类型的本地文件到 RED5 服务器。使用的是 Flex 的 FileReference 接口,该接口可以对远程服务器上的文件进行上传、下载。FileReference 类提供了一个对话框接口和一个 upload 方法,通过该对话框,选择本地文件,而 upload 方法将会调用远程服务器端的 PHP,ASP 或者 Java 代码来进行上传。         首先创建一个 Flex3 应用程序,该程序获得本地文件,并调用 RED5 服务器 "http://localhost:5080/Red5FileUploadProj/fileupload" 的 servlet。

UploadToRed5Proj.mxml 源代码如下:

[Bindable]privatevar fileReference:FileReference;

[Bindable]private var fileSelected:Boolean = false;

[Bindable]private var serverUrl:String = "http://localhost:5080/Red5FileUploadProj/fileupload";private var statusArray:Array = newArray();

[Bindable]private var statusArrayCollection:ArrayCollection = newArrayCollection();private function doInit():void{

fileReference= newFileReference();

fileReference.addEventListener(Event.SELECT, onFileSelect);

fileReference.addEventListener(Event.COMPLETE, onUploadComplete);

fileReference.addEventListener(ProgressEvent.PROGRESS,onUploadProgress);

fileReference.addEventListener(IOErrorEvent.IO_ERROR, onUploadError);

fileReference.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onUploadError);

}private function browseFile(event:MouseEvent):void{

fileReference.browse();

}private function onFileSelect(event:Event):void{

fileSelected= true;

fileTxt.text=fileReference.name;

statusArray.push({status:"Ready to upload "+fileTxt.text});

statusArrayCollection= newArrayCollection(statusArray);

}private function uploadFile(event:MouseEvent):void{if (!fileSelected || (urlTxt.text.length == 0))

{

Alert.show("Select a file and Enter a URL");return;

}

var urlRequest:URLRequest= newURLRequest(urlTxt.text);

fileReference.upload(urlRequest);

}private function onUploadProgress(event:ProgressEvent):void{

statusArray.push({status:"In progress.."+((event.bytesLoaded * 100) / event.bytesTotal).toString()+"%"});

statusArrayCollection= newArrayCollection(statusArray);

}private function onUploadComplete(event:Event):void{

statusArray.push({status:"Uploaded successfully!"});

statusArrayCollection= newArrayCollection(statusArray);

}private function onUploadError(event:Event):void{if(event is IOErrorEvent)

{

statusArray.push({status:"IO Error: "+(event as IOErrorEvent).text.toString()});

statusArrayCollection= newArrayCollection(statusArray);

}else if(event is SecurityErrorEvent)

{

statusArray.push({status:"Security Error: "+(event as IOErrorEvent).text.toString()});

statusArrayCollection= newArrayCollection(statusArray);

}

}

]]>

服务器端的 Java Servlet 代码使用一个 Apache 的第三方类库 Commons FileUpload 包,它可以使我们的 servlets 或者 web 应用程序具有上传的功能。这个包可以从这里进行下载:http://commons.apache.org/fileupload/。Commons FileUpload 包内部使用了 Apache Commons IO 包,所以我们把这个包也下下来:http://commons.apache.org/io/。在本文的例子中,我使用的是 commons-fileupload-1.2.1.jar 和 commons-io-1.4.jar。将 commons-fileupload-1.2.1.jar、commons-io-1.4.jar 和 servlet-api.jar 复制到 RED5 项目的 /WEB-INF/lib 目录下。其中 servlet-api.jar 可以去 tomcat 安装目录下的 lib 文件夹下去找。

然后,在我们的 RED5 应用程序的 web.xml 文件夹下添加如下内容:

fileupload

com.mycompany.ind.red5.FileUploadServlet

uploadFolder

uploads

fileupload

/fileupload

如果你熟悉 JEE,你会发现和 tomcat 的 web.xml 配置基本一致:servlet-mapping 元素将匹配 /fileupload 的 url 到名为 "fileupload" 的 servlet,servlet 元素则指示出该 servlet 具体实现类;上传的文件夹名作为 servlet 的初始参数也在这里进行定义,这里定义为 "uploads",所以应该在我们的 RED5 项目根目录下创建一个同名文件夹。

最后,写具体实现上传的 FileUploadServlet 类:

packagecom.mycompany.ind.red5;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.commons.fileupload.FileItem;importorg.apache.commons.fileupload.FileItemFactory;importorg.apache.commons.fileupload.FileUploadException;importorg.apache.commons.fileupload.disk.DiskFileItemFactory;importorg.apache.commons.fileupload.servlet.ServletFileUpload;importjava.io.IOException;importjava.util.Iterator;importjava.util.List;importjava.io.FileOutputStream;importjava.io.FileNotFoundException;public class FileUploadServlet extendsHttpServlet

{

@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException

{super.doGet(request, response);

doPost(request,response);

}

@Overridepublic voiddoPost( HttpServletRequest request, HttpServletResponse response )

{/*** Create a factory for new disk-based file items*/FileItemFactory factory= newDiskFileItemFactory();/*** Create a new file upload handler*/ServletFileUpload upload= newServletFileUpload(factory);try{/*** Parsing input request*/List items=upload.parseRequest(request);/*** Process the uploaded items*/Iterator iter=items.iterator();while(iter.hasNext())

{

FileItem item=(FileItem) iter.next();/*** handling a normal form-field*/

if(item.isFormField())

{

System.out.println("A form field");

}else{/*** handling file uploads*/System.out.println("Not a form field");

String uploadFileName=item.getName();byte[] data =item.get();/*** Gets directory to which the file is to be uploaded*/String uploadFolder= getServletConfig().getInitParameter("uploadFolder");

String fileFolderName= getServletContext().getRealPath(uploadFolder + "\\"+uploadFileName);try{

FileOutputStream fileOutSt= newFileOutputStream(fileFolderName);try{

fileOutSt.write(data);

fileOutSt.close();

}catch(IOException exception)

{

exception.printStackTrace();

}

}catch(FileNotFoundException exception)

{

exception.printStackTrace();

}

}

}

}catch(FileUploadException exception)

{

exception.printStackTrace();

}

}

}

flex java red5_使用 Flex 和Java servlets 将文件上传到 RED5 服务器的步骤相关推荐

  1. java ftp上传文件 linux_Java实现把文件上传至ftp服务器

    用Java实现ftp文件上传.我使用的是commons-net-1.4.1.zip.其中包含了众多的java网络编程的工具包. 1 把commons-net-1.4.1.jar包加载到项目工程中去. ...

  2. java实现多文件上传至本地服务器

    转载自  java实现多文件上传至本地服务器 博主最近在做一个内网项目,内部可以访问外部数据,但是外部访问不了内部数据,这也就造成了可能文件无法上传,所以博主另辟蹊径,在本地服务器上建立一个文件夹专门 ...

  3. Java将文件上传到ftp服务器

    Java将文件上传到ftp服务器 首先简单介绍一下什么是FTP,以及如何在自己的电脑上搭建一个ftp服务器: -- FTP是文件传输协议(FTP)是一种客户端/服务器协议,用于将文件传输到主机或与主机 ...

  4. java文件上传到云服务器,java文件上传到云服务器

    java文件上传到云服务器 内容精选 换一换 当用户拥有Linux操作系统的外部镜像文件,且类型及操作系统符合外部镜像文件格式和操作系统类型要求时,用户可以将外部镜像文件创建为Linux系统盘镜像. ...

  5. Win10搭建FTP服务器+java代码实现文件上传至FTP服务器

    Win10搭建ftp服务器 打开控制面板 -> 程序和功能,点击启用或关闭Windows功能,勾选红色方框内的选项 控制面板 -> 管理工具,如下打开IIS管理器 先在本地磁盘中创建一个目 ...

  6. java文件下载用什么技术_Java中实现文件上传下载的三种解决方案(推荐)

    javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 Save 改进后的代码不需要for ...

  7. Java之~hutool批量压缩多个图片文件上传到云服务(InputStream )

    用的hutool工具类 import cn.hutool.core.util.ZipUtil; 批量多张图片进行压缩.我这边是将上传到华为云的图片进行批量打包压缩. //图片批量压缩     @Tes ...

  8. ckfinder java 源码_Ckeditor与Ckfinder(java)整合实现富媒体内容编辑(支持文件上传)

    先来看一下最终的效果图 一.编辑器界面 二.上传图片界面 一.安装包下载,我使用的安装包是ckfinder_java_2.3.zip和ckeditor_3.6.3.zip,这两个文件可以分别到 htt ...

  9. Java中使用UUID给图片命名的文件上传方法

    场景 照片上传时给重命名时使用UUID进行重命名. 实现 在实现方法上传的方法中调用工具类的地方 Map<String, Object> result = ImageUtil.getIns ...

最新文章

  1. 利用世界杯,读懂 Python 装饰器
  2. android computescroll_Android Scroller与computeScroll方法的调用关系
  3. VTK:几何对象之OpenVRCone
  4. EqualLogic全攻略视频[(四)高级管理]
  5. 使用Selenide进行有效的UI测试
  6. Linux 下几款程序内存泄漏检查工具
  7. 智商税?苹果1.8米连接线卖949元、3米的1169元被吐槽:高攀不起
  8. Python链表学习
  9. jenkins配置sonar并扫描C#代码
  10. ipv6单播地址包括哪两种类型_探秘联接|技术小课堂之BRAS设备IPv6地址分配方式...
  11. 批量创建文件夹 在批量创建的文件夹下创建两个子文件夹
  12. 华为linux输入法,华为默认手机输入法原来还能这么玩??涨知识了
  13. Android5.0新特性:RecyclerView实现上拉加载更多
  14. 苹果x微信为什么不出定位服务器,苹果x微信发动态为什么显示不了位置
  15. FPGA芯片供电总结
  16. 使用Pr CS6剪视频导入的视频中音频一直出现“在试图写入下列文件时发生了错误…”提示在右下角。?
  17. 深度学习机器学习面试题(理论基础)
  18. 薅羊毛的机会了,点个“赚”即有机会赚取高额佣金
  19. 百度AI的时代献礼:与央视搭AI秀台,让万物智能样貌清晰可见
  20. html5 h5是什么,H5是什么?你真的了解什么是H5?

热门文章

  1. 使用基于 WebRTC 的 JavaScript API 在浏览器环境里调用本机摄像头
  2. SAP Spartacus 因为 refresh token 刷新令牌过期后显示用户重新登录页面的逻辑
  3. SAP Spartacus OCC 请求头部的 Access Token 是如何被添加的
  4. Angular应用的angular.json文件字段一览
  5. Groovy的本地安装和Eclipse插件的配置
  6. SAP Analytics Cloud里的Planning model
  7. SAP UI5 local sandbox bootstrap的执行细节
  8. sap.ui.viewModifications view extension
  9. SAP ui5 configuration.js
  10. SAP UI5 sap.m.ListMode - ModesingleSelectMaster