由于每个照片的路径在数据库中均有唯一的主键ID,所以可以对上传的文件名进行修改,改为主键值和后缀名相加。这样每个文件的文件名在文件夹中就是唯一的了,而路径名自然就不会重复。
例如:
上传表单文件:load.jsp
上传一个图片以及传递两个参数
<%@ page language="java" contentType="text/html; charset=gbk"%>
<%@ page pageEncoding="gbk"%>
<%@ page import="com.jspsmart.upload.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>Insert title here</title>
</head>
<body>
<form action="upd2.jsp" method="post" enctype="multipart/form-data" name="form1">
<input type="file" name="file1">
<input type="text" name="title">
<input type="text" name="content">
<input type="submit" value="上传" >
</form>
</body>
</html>
接受上传文件:okUpload.jsp
接受图片改变名称保存到指定目录并在网页上发布
接受参数值并显示在图片下面
<%@ page language="java" contentType="text/html; charset=gbk"%>
<%@ page pageEncoding="gbk"%>
<%@ page import="com.jspsmart.upload.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>上传处理</title>
</head>
<body>
<%
SmartUpload su=new SmartUpload();
//初始化
su.initialize(pageContext);
//上传
su.upload();
// 设置保存信息
String dir="upload";
//获取上传文件列表集合
Files files=su.getFiles();
for(int i=0;i<files.getCount();i++){
File file=files.getFile(i);
//判断上传的是不是文件
if(!file.isMissing()){
//将获取的图片另存为文件名为new,后缀名从原是文件中获得
file.saveAs(dir+"/new."+file.getFileExt(),su.SAVE_VIRTUAL);
//获取图片的客户端路径名
String name1=file.getFilePathName();
out.print("客户机原始路径名: ");
out.print(name1);
out.print("<br>");
out.print("服务器上的相对路径名: ");
//构造服务器上的相对路径名
String name2=dir+"/"+"new.jpg";
out.print(name2);
out.print("<br>");
%>
<!-- 将上传后的图片发布 -->
<img src="<%=name2 %>">
<%
}
}
%>
<!-- 获取传过来的非文件参数值 -->
<%=su.getRequest().getParameter("title") %>
<br>
<%=su.getRequest().getParameter("content") %>
<br>
<br>
</body>
</html>
这个例子可以改变文件上传名,并保存到制定目录/web应用/upload/下面,upload文件夹位于所创建的web应用下面
这只是个简单的例子,根据需要还可以进行修改,使功能更加完善。
注意:
上传前要先创建upload目录,否则会发生异常
jspSmartUpload要先放在tomcat/lib或者tomcat/commons/lib下,并设置环境变量
需要jspSmartUpload可给我发信