flex java red5_使用 Flex 和Java servlets 将文件上传到 RED5 服务器的步骤
本文使用一个 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 服务器的步骤相关推荐
- java ftp上传文件 linux_Java实现把文件上传至ftp服务器
用Java实现ftp文件上传.我使用的是commons-net-1.4.1.zip.其中包含了众多的java网络编程的工具包. 1 把commons-net-1.4.1.jar包加载到项目工程中去. ...
- java实现多文件上传至本地服务器
转载自 java实现多文件上传至本地服务器 博主最近在做一个内网项目,内部可以访问外部数据,但是外部访问不了内部数据,这也就造成了可能文件无法上传,所以博主另辟蹊径,在本地服务器上建立一个文件夹专门 ...
- Java将文件上传到ftp服务器
Java将文件上传到ftp服务器 首先简单介绍一下什么是FTP,以及如何在自己的电脑上搭建一个ftp服务器: -- FTP是文件传输协议(FTP)是一种客户端/服务器协议,用于将文件传输到主机或与主机 ...
- java文件上传到云服务器,java文件上传到云服务器
java文件上传到云服务器 内容精选 换一换 当用户拥有Linux操作系统的外部镜像文件,且类型及操作系统符合外部镜像文件格式和操作系统类型要求时,用户可以将外部镜像文件创建为Linux系统盘镜像. ...
- Win10搭建FTP服务器+java代码实现文件上传至FTP服务器
Win10搭建ftp服务器 打开控制面板 -> 程序和功能,点击启用或关闭Windows功能,勾选红色方框内的选项 控制面板 -> 管理工具,如下打开IIS管理器 先在本地磁盘中创建一个目 ...
- java文件下载用什么技术_Java中实现文件上传下载的三种解决方案(推荐)
javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 Save 改进后的代码不需要for ...
- Java之~hutool批量压缩多个图片文件上传到云服务(InputStream )
用的hutool工具类 import cn.hutool.core.util.ZipUtil; 批量多张图片进行压缩.我这边是将上传到华为云的图片进行批量打包压缩. //图片批量压缩 @Tes ...
- ckfinder java 源码_Ckeditor与Ckfinder(java)整合实现富媒体内容编辑(支持文件上传)
先来看一下最终的效果图 一.编辑器界面 二.上传图片界面 一.安装包下载,我使用的安装包是ckfinder_java_2.3.zip和ckeditor_3.6.3.zip,这两个文件可以分别到 htt ...
- Java中使用UUID给图片命名的文件上传方法
场景 照片上传时给重命名时使用UUID进行重命名. 实现 在实现方法上传的方法中调用工具类的地方 Map<String, Object> result = ImageUtil.getIns ...
最新文章
- 利用世界杯,读懂 Python 装饰器
- android computescroll_Android Scroller与computeScroll方法的调用关系
- VTK:几何对象之OpenVRCone
- EqualLogic全攻略视频[(四)高级管理]
- 使用Selenide进行有效的UI测试
- Linux 下几款程序内存泄漏检查工具
- 智商税?苹果1.8米连接线卖949元、3米的1169元被吐槽:高攀不起
- Python链表学习
- jenkins配置sonar并扫描C#代码
- ipv6单播地址包括哪两种类型_探秘联接|技术小课堂之BRAS设备IPv6地址分配方式...
- 批量创建文件夹 在批量创建的文件夹下创建两个子文件夹
- 华为linux输入法,华为默认手机输入法原来还能这么玩??涨知识了
- Android5.0新特性:RecyclerView实现上拉加载更多
- 苹果x微信为什么不出定位服务器,苹果x微信发动态为什么显示不了位置
- FPGA芯片供电总结
- 使用Pr CS6剪视频导入的视频中音频一直出现“在试图写入下列文件时发生了错误…”提示在右下角。?
- 深度学习机器学习面试题(理论基础)
- 薅羊毛的机会了,点个“赚”即有机会赚取高额佣金
- 百度AI的时代献礼:与央视搭AI秀台,让万物智能样貌清晰可见
- html5 h5是什么,H5是什么?你真的了解什么是H5?
热门文章
- 使用基于 WebRTC 的 JavaScript API 在浏览器环境里调用本机摄像头
- SAP Spartacus 因为 refresh token 刷新令牌过期后显示用户重新登录页面的逻辑
- SAP Spartacus OCC 请求头部的 Access Token 是如何被添加的
- Angular应用的angular.json文件字段一览
- Groovy的本地安装和Eclipse插件的配置
- SAP Analytics Cloud里的Planning model
- SAP UI5 local sandbox bootstrap的执行细节
- sap.ui.viewModifications view extension
- SAP ui5 configuration.js
- SAP UI5 sap.m.ListMode - ModesingleSelectMaster