文件上传

本文介绍了一个文件上传处理的实现过程,包括监听文件上传进度、设置文件大小限制、解析请求并处理上传文件等内容。同时,文章还展示了如何使用监听器监测上传状态及如何处理上传过程中的异常。
private void doFileUpload(HttpSession session, HttpServletRequest request,
HttpServletResponse response) throws IOException
{
try
{
long totalSize = request.getContentLength();

// 创建UploadListener对象
UploadListener listener = new UploadListener(totalSize);

// 启动监听状态
listener.start();

// 将监听器对象的状态保存在Session中
session.setAttribute("FILE_UPLOAD_STATS",
listener.getFileUploadStats());

// 创建MonitoredDiskFileItemFactory对象
MonitoredDiskFileItemFactory factory = new MonitoredDiskFileItemFactory(
listener);
factory.setSizeThreshold(UPLOAD_THRESHOLD_SIZE);

// 通过该工厂对象创建ServletFileUpload对象
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
upload.setSizeMax(UPLOAD_MAX_SIZE);
// 将转化请求保存到list对象中
List items = upload.parseRequest(request);

// 停止使用监听器
listener.done();

boolean hasError = false;

// 循环list中的对象
for (Iterator i = items.iterator(); i.hasNext();)
{
FileItem fileItem = (FileItem) i.next();
//如果该FileItem不是表单域
if (!fileItem.isFormField())
{
try
{
//调用processUploadedFile方法,将数据保存到文件中
processUploadedFile(fileItem, request);
}
catch (FileNotFoundException fe)
{
throw fe;
}
finally
{
//内存中删除该数据流
fileItem.delete();
}
}
else
{
//获取节点名称
String name = fileItem.getFieldName();
if ("AddNodeTextName1".equals(name))
{
nodeName = new String(fileItem.getString().getBytes("ISO8859-1"),"UTF-8");
}


}
}

//添加节点
try
{
//调用添加节点方法
}
catch (AppException e)
{
session.setAttribute("isSuccess", false);
e.printStackTrace();
}

if (!hasError) // 如果没有出现错误
{
//调用sendCompleteResponse方法
sendCompleteResponse(response, null);
}
else
{
sendCompleteResponse(response, this.getMessage("Upload.fail",
request));
}
}
}
1.引言 为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。对软件需求的深入了解是软件开发工作获得成功的前提条件,不论吧设计和编码工作做得如何出色,不能真正满足用户需求的程序只会令用户失望,给开发者带来烦恼。 需求分析是软件定义时期的最后一个间断,他的基本任务是准确地回答“系统必须做什么?”这个问题。 需求分析和规格说明是一项十分艰巨复杂的工作。用户与分析员之间需要沟通的内容非常多,在双方交流信息的过程中很容易出现误解或遗漏,也可能存在二义性。因此,不仅在整个需求分析过程中应该采用行之有效的通信技术,集中精力过细地工作,而且必须严格审核验证需求分析的结构。在所有这些分析方法中,我们都必须遵循下述准则: (1) 必须理解并描述问题的信息域,根据这条准则应该建立数据模型 (2) 必须定义软件应完成的功能,这条准则要求建立功能模型 (3) 必须描述作为外部事件结构的软件行为,这条准则要求建立行为模型 (4) 必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节 接下来我们将严格根据需求分析的要求与书写软件需求规格说明书的过程阐述系统必须完成那些工作,对该点评网提出完整、准确、清晰、具体的要求。过程中不免有问题与
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值