##1.主要功能是完成上传操作,如果想要上传的话,则直接使用html表单中的file元素即可。
例如:
<form >
<input type="file" />
</form>
常见的长传组件就是Smartupload、ApacheFileUpload
##2.使用SmartUpload 上传文件
###范例:编写一个表单
<form action="smartupload.jsp" method="post" >
上传图片:<input type="file" name="file" />
<input type="submit" value="提交" />"
</form>
之后编写jsp文件,接受上传的内容,上传的内容分为以下几步:
- 初始化上传
- 准备上传
- 保存文件
###范例2:smartupload01.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<jsp:useBean id="smartupload" class="org.lxh.smart.SmartUpload" />
<html>
<head>
<base href="<%=basePath%>">
<title>smartupload</title>
</head>
<body>
<%
smartupload.initialize(pageContext); //初始化长传
smartupload.upload(); //准备上传
smartupload.save("upload"); //上传文件
%>
</body>
</html>
以上程序正确执行了,但是在upload文件夹之中,并没有此文件,为什么呢? 正常情况下表单中提交的都是文本数据。而如果现在上传文件了,此时必须明确表示出上传的不再是一个单单的文本文件,所以此时,表单需要封装,如果不封装,则肯定无法找到上传文件。
##2.封装表单
在form元素中,存在一个enctype的属性,表示表单的封装形式。
范例:
<form action="smartupload01.jsp" method="post" enctype="multipart/form-date">
上传图片:<input type="file" name="file" />
<input type="submit" value="提交" />"
</form>
之后再次提交表单,观察upload文件夹。此时发现已经上传成功了。而且文件名与上传之前的文件名称完全一致。
表单封装之后,不可以使用request得到参数,但是不封装,又无法得到上传的文件