昨天使用SmartUpload组件上传文件,代码很简单:
smartupload_demo01.html
<html>
<head><title>smartupload_demo01.html</title></head>
<body>
<form action="smartupload_demo01.jsp" method="post" enctype="multipart/form-data">
请选择文件:<input type="file" name="pic">
<input type="submit" value="上传">
</form>
</body>
</html>
smartupload_demo01.jsp
<%@page contentType="text/html" pageEncoding="GBK"%>
<%@page import="com.jspsmart.upload.*"%>
<html>
<head><title>smartupload_demo01.jsp</title></head>
<body>
<%
int count = 0;
SmartUpload smart = new SmartUpload(); // 实例化SmartUpload对象
smart.initialize(pageContext); // 初始化上传操作
smart.upload(); // 准备上传
try {
count = smart.save("upload"); // 将上传的文件保存在upload文件夹中
%>
<%=count%> files upload.
<%
}catch(Exception e) {
e.printStackTrace();
}
%>
</body>
</html>
刚开始我以为不需要使用request.getParameter()获取表单项的值,就自以为是的在<input type="file">里没有写name属性,结果没有任何错误提示,可就是无法上传文件,后来在网上查了下资料才发现。没有name属性servlet是接受不到表单信息的,SmartUpload中的upload()方法也需要name属性来获取参数的。所以这个name属性是必不可少的。
另外:在设置<form>标签中的enctype属性时一定不要将字母打错,计算机时很严谨的,打错一个字母都无法上传。我就是将form-data打成form-date结果无法上传,系统也不报错,找了很久才发现这个小错误。:-(
以上就是我在使用SmartUpload上传文件时踩过的坑,记录在这里提醒自己,也希望能帮助到需要的人。