事先要在给工程添加两个库文件,一个是commons-fileupload-1.2.1,一个是commons-io-1.2
客户端只需要FileReference 或者是FileReferenceList这两个类就可以了
服务器上传代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FileUploadServlet extends HttpServlet
{
private String uploadPath = "D:\\upload\\";
private String skStr = "";
private int maxPostSize = 1000 * 1024 * 1024;
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException,
IOException
{
String filePathaa = this.getServletConfig().getServletContext().getRealPath("/");
res.setContentType("text/html;charset=UTF-8");
req.setCharacterEncoding("UTF-8");
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1024*20);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(maxPostSize);
try
{
List fileItems = upload.parseRequest(req);
Iterator iter = fileItems.iterator();
while (iter.hasNext())
{
FileItem item = (FileItem) iter.next();
if (!item.isFormField())
{
String name = item.getName();
try
{
File skFile = new File(uploadPath + name);
if (skFile.exists())
{
skFile.delete();
item.write(new File(uploadPath + name));
}
else
{
item.write(new File(uploadPath + name));
}
} catch (Exception e)
{
e.printStackTrace();
}
}
}
} catch (FileUploadException e)
{
e.printStackTrace();
}
}
}
客户端代码(主要是as文件,通过<mx:script source=''>导入的mxml中)
import flash.events.Event;
import flash.net.FileReference;
import flash.net.URLRequest;
import mx.controls.Alert;
private var selectFile:FileReference ;
private function init():void
{
selectFile = new FileReference();
}
private function upLoadFiles():void
{
try
{
selectFile.browse();
selectFile.addEventListener(Event.SELECT, selectHandler1);
}
catch (error:Error)
{
Alert.show("文件选择出现错误,请选择正确的文件");
}
}
/** *//**
* 如果文件被选中,则执行该方法
* */
private function selectHandler1(event:Event):void
{
var request:URLRequest = new URLRequest("http://localhost:8080/upLoaderfile/FileUploadServlet");
selectFile.addEventListener(ProgressEvent.PROGRESS, progressHandler);
selectFile.addEventListener(Event.COMPLETE,UpLoadcompleteHandler);
try
{
selectFile.upload(request);
}
catch (error:Error)
{
Alert.show(error.message.toString());
}
}
private function UpLoadcompleteHandler(event:Event):void
{
var upLoadFiles:FileReference = FileReference(event.target);
var fileNames:String = upLoadFiles.name;
Alert.show('文件'+fileNames+'上传成功')
}
private function progressHandler(e:ProgressEvent):void
{
var proc: uint = e.bytesLoaded / e.bytesTotal * 100;
trace( proc + "%");
}
这仅仅是服务器和客户端的代码要将二者联系起来需要在服务器写配置文件
就是在web.xml中添加如下代码
<servlet>
<servlet-name>FileUploadServlet</servlet-name>
<servlet-class>FileUploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileUploadServlet</servlet-name>
<url-pattern>/FileUploadServlet</url-pattern>
</servlet-mapping>
最后部署工程
然后运行
分享到:
相关推荐
在web.xml中,我们可以定义Servlet的映射路径,使得Flex客户端知道应该向哪个URL发送文件。例如,你可以定义一个如下的Servlet映射: ```xml <servlet> <servlet-name>FileUploadServlet</servlet-name> <servlet...
在"flex+servlet简单实例"中,我们通常会通过Flex客户端发送HTTP请求到Servlet服务器,Servlet接收请求后进行业务处理,然后将结果返回给Flex客户端展示。这个过程涉及以下几个关键知识点: 1. **Flex客户端开发**...
完成文件保存后,Servlet可以通过HttpServletResponse向Flex客户端返回一个响应,比如返回文件的URL,这样前端就可以根据URL显示已上传的图片。 此外,"PicUpload_Java"和"PicUpload_Flex"可能是项目中的两个关键源...
Flex客户端通过HTTP或HTTPS协议向Servlet发送AMF请求,Servlet接收到请求后处理数据,再以AMF格式返回响应。 四、实现步骤 1. 创建Flex项目:使用Flex Builder或IntelliJ IDEA等IDE创建Flex项目,定义MXML界面和...
5. Servlet将转换后的数据写入HTTP响应,并返回给Flex客户端。 6. **Flex客户端** 接收响应,解析数据,并更新UI以显示查询结果。 这个源码实例对于理解Flex与Servlet的集成以及数据库交互具有很高的实践价值。学习...
博文链接" https://yexin218.iteye.com/blog/207219 "指向了详细的教程,可以提供更深入的实现细节和步骤,包括如何配置Flex客户端,设置HTTP服务,以及编写Java Servlet来处理文件上传。 【标签】"源码"意味着这个...
本示例主要涉及了`Flex`和`Servlet`技术的结合,用于实现多文件上传的功能。`Flex`是一种基于Adobe Flash Player或Adobe AIR运行时的富互联网应用程序(RIA)开发框架,而`Servlet`则是Java Web开发中的服务器端组件...
4. **创建Servlet**:编写Java Servlet来处理Flex客户端的请求。Servlet可以使用Spring框架或其他依赖注入工具来管理业务对象和服务。 5. **定义服务**:在Flex项目中,使用RemoteObject或WebService组件来调用...
在Flex和Servlet的结合中,Servlet通常用于处理来自Flex客户端的HTTP请求,执行必要的操作,如数据库查询、业务逻辑处理,然后将结果以XML或JSON格式返回给Flex。 整合Flex和Servlet的过程主要包括以下几个步骤: ...
- 记得处理异常并返回适当的响应,例如JSON或XML格式的响应,以便Flex客户端可以获取上传状态。 4. **配置Web服务器和Servlet**: 配置Web服务器(如Tomcat)以部署包含Servlet的Web应用程序,并确保Servlet映射...
BlazeDS是一个开源的服务器端组件,它允许Flex客户端与Java应用服务器之间进行双向数据交换,支持AMF(Action Message Format)协议,提供了低延迟、高性能的数据传输。 首先,我们需要创建一个Web Project,比如...
这样的组合允许后端服务器处理业务逻辑和数据管理,而前端Flex客户端则负责提供用户交互和动态界面。以下是对这个主题的详细讲解: 1. **Eclipse IDE**: Eclipse是一款开源的集成开发环境,广泛用于Java开发,...
5. **文件上传流程**:在Flex客户端,用户选择文件后,Flex会通过HTTP POST请求将文件数据发送到Java服务器。为了处理大文件或提高用户体验,可以采用分块上传、断点续传等技术。Java服务器接收到文件数据后,将其...
在文件上传下载组件中,Servlet充当了后端服务的角色,接收Flex客户端发送的HTTP请求,处理文件上传和下载的逻辑,如文件的存储、读取、验证和权限控制等。Java Servlet API提供了处理HTTP请求和响应的方法,使得...
4. **返回响应**:在Servlet处理完文件后,向Flex客户端返回一个响应,告知文件上传的状态,如成功、失败或部分成功。 在Flex4应用中,还需要处理上传进度显示、错误处理等用户体验优化。例如,可以监听...
在本项目中,Flex客户端可能使用HTTP或AMF(Action Message Format)与Servlet通信,Servlet接收到消息后存储在一个共享的数据结构中,然后广播给其他用户。 【压缩包子文件的文件名称列表】: softeeTalkRoom 这个...
当Flex客户端发送文件时,这些文件会被封装在HTTP请求中,然后由Servlet解析并保存到服务器的指定位置。Servlet需要处理诸如文件类型的验证、大小限制、重命名策略以及异常处理等安全问题。此外,Servlet还可以返回...