上传本地的路径,和上传
pp2up.jsp
<%@page contentType="text/html;charset=gb2312" import="java.util.*"%>
<%@ page import="com.pp.db.DBOperate"%>
<%@ page import="my.bean.*"%>
<%@ page import="com.jetsum.manager.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>我要上传</title>
<link href="../center/style/center_css.css" _fcksavedurl=""../center/style/center_css.css"" rel="stylesheet" type="text/css" />
<link href="../login/style/login_css.css" rel="stylesheet" type="text/css" />
<link href="upload_style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.STYLE4 {font-size: 14px; color: #FFFFFF; font-weight: bold; }
.STYLE5 {
font-size: 12px;
color: #000000;
}
.STYLE6 {
font-size: 14px;
font-weight: bold;
color: #000000;
}
.STYLE7 {color: #FF0000}
-->
</style>
</head>
<body>
<br/><br/>
<%
DBOperate dbo = new DBOperate();
String hqltypefirst ="from Source_type where levels='0' and state='1' order by orders";
dbo.setLength(1000);
List typefirst = (List) dbo.findSQLHibernate(hqltypefirst, 1);
manager manager1=new manager();
if(session.getAttribute("manager")==null){
out.println("<form name='frm1' style='display:none' method='post' action='/web/managere7kao2007back/index.jsp' target='_top'>");
out.println("</form>");
out.println("<script language='javascript'>");
out.println("document.frm1.submit();");
out.println("</script>");
}else{
manager1=(manager)session.getAttribute("manager");
}
Picture pic = new Picture();
String random = pic.getRandom();
String encryRandom= pic.manage(random);
session.setAttribute("get_attach",random);
session.setAttribute("sessionNumsY","0");
session.setAttribute("sessionNums","0");
String hql = "from Source_type as type1 where type1.levels='0' and state='1' and leibie=4 order by type1.orders desc";
List typelistFirst=(List)dbo.findSQLHibernate(hql,1);
String loginerror="";
if(session.getAttribute("loginerror")!=null){
loginerror=(String)session.getAttribute("loginerror");
session.removeAttribute("loginerror");
}
%>
<script>
var secondidsize=new Array();;
var threesize=new Array();
//选择二级分类
function selectSecondType(s) {
var a = document.getElementsByName("levelid");
switch (a[s].value)
{
case'':
var type_labels=new Array("-- 请选择 --");
var type_values=new Array("");
break;
<%
for(int i = 0; i < typelistFirst.size(); i++)
{
Source_type typeone = (Source_type)typelistFirst.get(i);
out.println("case'"+typeone.getId()+"':");
//System.out.println("case'"+typeone.getId()+"':");
//二级分类信息
List typelistSecond=(List)dbo.findSQLHibernate("from Source_type as type1 where type1.levels='"+typeone.getId()+"' and state='1' order by type1.orders desc",1);
out.println("var type_labels = new Array();");
out.println("var type_values = new Array();");
out.println("type_labels[0] = /"-- 请选择 --/";");
out.println("type_values[0] = /"/";");
out.println("secondidsize[s]="+typelistSecond.size());
for(int j=0;j<typelistSecond.size();j++)
{
Source_type Type = (Source_type)typelistSecond.get(j);
out.println("type_labels["+(j+1)+"] = /""+new String(Type.getTypename().getBytes("iso-8859-1"),"gb2312")+"/";");
out.println("type_values["+(j+1)+"] = /""+Type.getId()+"/";");
}
out.println("break;");
}
%>
}
var b = document.getElementsByName("secondid");
b[s].options.length = 0;
for(var i = 0; i <type_labels.length; i++) {
b[s].add(document.createElement("OPTION"));
if(i>0){
b[s].style.display="";
}else{
b[s].style.display="none";
}
b[s].options[i].text=type_labels[i];
b[s].options[i].value=type_values[i];
}
}
var nms=0;
//选择三级分类
function selectThreeType(s){
var b = document.getElementsByName("secondid");
switch (b[s].value)
{
case'':
var product_labels=new Array("-- 请选择 --");
var product_values=new Array("");
break;
<%
for(int i = 0; i < typelistFirst.size(); i++)
{
Source_type typeone = (Source_type)typelistFirst.get(i);
List typeList = (List)dbo.findSQLHibernate("from Source_type as type1 where type1.levels='"+typeone.getId()+"' and state='1' order by type1.orders desc",1);
for(int j=0;j<typeList.size();j++)
{
Source_type Type = (Source_type)typeList.get(j);
out.println("case'"+Type.getId()+"':");
//三级分类
List threeList=null;
threeList=(List)dbo.findSQLHibernate("from Source_type as type1 where type1.levels='"+Type.getId()+"' and state='1' order by type1.orders desc",1);
out.println("var product_labels = new Array();");
out.println("var product_values = new Array();");
out.println("product_labels[0] = /"-- 请选择 --/";");
out.println("product_values[0] = /"/";");
out.println("threesize[s]="+threeList.size());
for(int k = 0; k < threeList.size(); k++)
{
Source_type Producttype = (Source_type)threeList.get(k);;
out.println("product_labels["+(k+1)+"] = /""+new String(Producttype.getTypename().getBytes("iso-8859-1"),"gb2312")+"/";");
out.println("product_values["+(k+1)+"] = /""+Producttype.getId()+"/";");
}
out.println("break;");
}
}
%>
}
var c = document.getElementsByName("typeid");
c[s].options.length = 0;
for(var i = 0; i <product_labels.length; i++)
{
c[s].add(document.createElement("OPTION"));
if(i>0){
c[s].style.display="";
}else{
c[s].style.display="none";
}
c[s].options[i].text=product_labels[i];
c[s].options[i].value=product_values[i];
}
}
function checkspace(checkstr) {
var str = '';
for(i = 0; i < checkstr.length; i++) {
str = str + ' ';
}
return (str == checkstr);
}
function checksubmit(){
if(checkspace(form6.title.value)){
alert('请输入资料名称!');
form6.title.focus();
return false;
}
if(checkspace(form6.content.value)){
alert('请输入资源介绍!');
form6.content.focus();
return false;
}
if(checkspace(form6.levelid.value)){
alert('请选择分类!');
form6.levelid.focus();
return false;
}
if(secondidsize>0){
if(checkspace(form6.secondid.value)){
alert('请选择分类!');
form6.secondid.focus();
return false;
}
}
if(threesize>0){
if(checkspace(form6.typeid.value)){
alert('请选择分类!');
form6.typeid.focus();
return false;
}
}
if(checkspace(form6.files.value)&&checkspace(form6.filesb.value)){
alert('请选择资料!');
form6.filesb.focus();
return false;
}
form6.submit();
}
</script>
<form name="form6" method="post" action="/web/center/SourceAction.html?method=uploadsource" enctype="multipart/form-data">
<table width="699" border="0" >
<tr>
<td width="135" bgcolor="#B8C9DB"><div align="right"><div id="upload_uptext" style="margin-top:5px;"><span class="STYLE6">资料名称:</span></div></td>
<td width="635"><input name="title" type="text" /></td>
</tr>
<tr>
<td bgcolor="#B8C9DB"><div align="right"id="upload_uptext" style="margin-top:5px;"><span class="STYLE6">资料分类:</span></div></td>
<td>
<select name="levelid" onChange="selectSecondType(0)">
<option value="" selected>-- 请选择 --</option>
<%for(int i=0;i<typelistFirst.size();i++){
Source_type sourcetype=(Source_type)typelistFirst.get(i);
%>
<option value="<%=sourcetype.getId()%>"><%=new String(sourcetype.getTypename().getBytes("iso-8859-1"),"gb2312")%></option>
<%}%>
</select>
<select name="secondid" style="display:none" onChange="selectThreeType(0)">
<option value="" selected>-- 请选择 --</option>
</select>
<select name="typeid" style="display:none">
<option value="" selected>-- 请选择 --</option>
</select></td>
</tr>
<tr>
<td bgcolor="#B8C9DB"><div align="right" id="upload_uptext" style="margin-top:5px;"><span class="STYLE6">进入免费区:</span></div></td>
<td><select name="frees"><option value="0" >否</option><option value="1" selected>是</option></select></td>
</tr>
<tr>
<td bgcolor="#B8C9DB"><div align="right"id="upload_uptext" style="margin-top:5px;"><span class="STYLE6">是否加密:</span></div></td>
<td><select name="jiami"><option value="0" selected>否</option><option value="1">是</option></select></td>
</tr>
<tr><td bgcolor="#B8C9DB"><div align="right"id="upload_uptext" style="margin-top:5px;"><span class="STYLE6">资源介绍:</span></div></td>
<td><textarea name="content"></textarea></td>
</tr>
<tr>
<td bgcolor="#B8C9DB"><div align="right" id="upload_uptext" style="margin-top:5px;"><span class="STYLE6">选择上传文件:</span></div></td>
<td><input type="file" name="files">
</td>
</tr>
<tr>
<td bgcolor="#B8C9DB"><div align="right" id="upload_uptext" style="margin-top:5px;"><span class="STYLE6">选择本地文件:</span></div></td>
<td>
<input type="file" id="f1" style="display:none">
<input id="f2" name="filesb"><input type="button" value="本地" onClick="f1.click();f2.value=f1.value;">
</td>
</tr>
<tr>
<td> </td>
<td><input id="tijiaofiles" type="button" value="确认提交信息" onClick="javascript:return checksubmit()"></td>
</tr>
</table>
</form>
</body>
</html>
SourceAction.java的一个方法 (对上传的文件和本地浏览的文件做不同的处理)
package my.action;
import java.util.Calendar;
import java.util.List;
import java.util.Random;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspFactory;
import my.bean.Log;
import my.bean.Source_inf;
import my.bean.Source_type;
import my.bean.manager;
import my.bean.member;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import com.jetsum.util.PubFunc;
import com.jspsmart.upload.SmartUpload;
import com.pp.db.DBOperate;
public class SourceAction extends DispatchAction {
public ActionForward uploadsource(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response) throws Exception {
DBOperate dbo = new DBOperate();
SmartUpload su = new SmartUpload();
JspFactory _jspxFactory = JspFactory.getDefaultFactory();
javax.servlet.jsp.PageContext pageContext =
_jspxFactory.getPageContext(
this.getServlet(),
request,
response,
null,
true,
8192,
true);
su.initialize(pageContext);
// su.initialize();
su.setAllowedFilesList("jpg,bmp,gif,rar");
su.upload();
String filename = su.getRequest().getParameter("title");
String levelid = su.getRequest().getParameter("levelid");
String secondid = su.getRequest().getParameter("secondid");
String typeid = su.getRequest().getParameter("typeid");
String frees = su.getRequest().getParameter("frees");
String jiami = su.getRequest().getParameter("jiami");
String content = su.getRequest().getParameter("content");
String filesb=su.getRequest().getParameter("filesb");
Source_inf inf=new Source_inf();
if(filesb==null)
{
String pic = "";
Random r = new Random();
int ra = r.nextInt();
Calendar CD = Calendar.getInstance();
int YY = CD.get(Calendar.YEAR);
int MM = CD.get(Calendar.MONTH) + 1;
int DD = CD.get(Calendar.DATE);
int HH=CD.get(Calendar.HOUR);
int M=CD.get(Calendar.MINUTE);
String dt = Integer.toString(YY) + Integer.toString(MM)
+ Integer.toString(DD)+Integer.toString(HH)+Integer.toString(M);
String prefix = dt + Integer.toString(ra);
String name = su.getFiles().getFile(0).getFileName();
int size=new Integer(su.getFiles().getFile(0).getSize()/1024); //KB
int lastdot = name.lastIndexOf(".");
String name2 = name.substring(lastdot);
String format=name.substring(lastdot+1);
pic = prefix + name2;
com.jspsmart.upload.File file = su.getFiles().getFile(0);
file.saveAs("uploadfiles/" + pic, su.SAVE_VIRTUAL);
inf.setFilesrc(new String(pic.getBytes("gb2312"), "iso-8859-1"));
inf.setFormats(format);
inf.setSizes(size+"KB");
}
else
{
String mm=filesb.replace("//","/");
inf.setFilesrc(new String(mm.getBytes("gb2312"), "iso-8859-1"));
int lastdot = filesb.lastIndexOf(".");
String format=filesb.substring(lastdot+1);
inf.setFormats(format);
inf.setSizes(2+"KB"); //本地上传的文件不知道大小
}
inf.setFilename(new String(filename.getBytes("gb2312"), "iso-8859-1"));
if(!typeid.equals(""))
{
inf.setTypeid(PubFunc.parseInt(typeid));
}
else
{
if(!secondid.equals(""))
{
inf.setTypeid(PubFunc.parseInt(secondid));
}
else
{
inf.setTypeid(PubFunc.parseInt(levelid));
}
}
inf.setFrees(frees);
inf.setJiami(PubFunc.parseInt(jiami));
inf.setContent(new String(content.getBytes("gb2312"), "iso-8859-1"));
HttpSession session = request.getSession();
manager manager1=(manager)session.getAttribute("manager");
//member member1=(member)session.getAttribute("member");
inf.setMemberid(manager1.getId());
inf.setDatetime(new java.util.Date().toLocaleString());
inf.setState("1");
inf.setCode(0);
inf.setNewss("1");
inf.setRedian("0");
inf.setAuthor(new String(manager1.getUsername().getBytes("gb2312"), "iso-8859-1"));
inf.setNumbers(1);
inf.setShenhe(1);
dbo.insert_update(inf, "insert");
// dbo.insert_update(member1, "update");
Log log1 = new Log();
log1.setUsername(manager1.getUsername());
log1.setDatetime(new java.util.Date().toLocaleString());
log1.setAction(new String(("添加下载资源<font color='#FF0000'><strong>"
+ new String(inf.getFilename().getBytes("iso-8859-1"),"gbk") + "</strong>--" + "</font>成功!").getBytes("gbk"),"iso-8859-1"));
dbo.insert_update(log1, "insert");
response.sendRedirect("/web/managere7kao2007back/upload/pp2up.jsp");
return actionMapping.findForward("");
}
}
download_do.jsp(精华部份,对本地下载和上传到uploadfiles的下载方法不同)
<%@page contentType="text/html;charset=UTF-8" import="java.util.*"%>
<%@ page import="my.bean.*"%>
<%@ page import="java.io.*"%>
<%@ page import="com.jetsum.manager.*,com.jetsum.util.*"%>
<%@ page import="com.pp.db.DBOperate"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>下载</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
String location="";
if(request.getParameter("location")!=null)
{
location= request.getParameter("location");
}
String id=request.getParameter("id");
DBOperate dbo=new DBOperate();
String hql4="from Source_inf where id="+id;
List inflist=(List)dbo.findSQLHibernate(hql4,1);
Source_inf inf1=new Source_inf();
if(inflist.size()>0){
inf1=(Source_inf)inflist.get(0);}
String src=new String(inf1.getFilesrc().getBytes("iso-8859-1"),"gb2312");
System.out.println(src);
if(location==null||location.equals("")){
%>
<script>
var file ="<%=src%>";
var pattern =/[A-Za-z]/:[^/:/?/"/>/</*]*/;
flag = pattern.test(file);
if(!flag)
{//不是本地文件
window.location.href="download_do.jsp?location=no&id=<%=id%>";
}
else
{
//是本地文件
window.location.href="download_do.jsp?location=yes&id=<%=id%>";
}
</script>
<% }
if(location.equals("no")) ///不是本地的但上传到uploadfiles的怎么下载
{
String filesrcsss="/uploadfiles/";
filesrcsss = request.getRealPath(filesrcsss);
if(!PubFunc.fileExists(filesrcsss+"/"+inf1.getFilesrc())){
//System.out.println(filesrcsss+"/"+inf1.getFilesrc());
out.println("<script>");
out.println("alert('该文件已不存在!');");
out.println("window.location.href='/Download.jsp'");
out.println("</script>");
return;
}
if(session.getAttribute("member")==null){
out.println("<script>");
out.println("alert('请注册成会员,现在所有的资源都可以免费下载!');");
out.println("window.location.href='/News.jsp'");
out.println("</script>");
return;
}
out.println("<script>");
out.println("document.location='http://"+request.getServerName()+"/uploadfiles/"+inf1.getFilesrc()+"';");
//下载了
out.println("</script>");
}
if(location.equals("yes")) //是本地的怎么下载
{
if(!PubFunc.fileExists(src)){
out.println("<script>");
out.println("alert('该文件已不存在!');");
out.println("window.location.href='/Download.jsp'");
out.println("</script>");
return;
}
if(session.getAttribute("member")==null){
out.println("<script>");
out.println("alert('请注册成会员,现在所有的资源都可以免费下载!');");
out.println("window.location.href='/News.jsp'");
out.println("</script>");
return;
}
//以下为下载的操作
out.clearBuffer(); // 如果使用JSP,需要加上这一句
OutputStream os = response.getOutputStream(); // 页面输出流,jsp/servlet都可以
String filename=src; //src为E:/java的软件/PLSQL Developer 中文.rar
int lastdot = filename.lastIndexOf("/");
String name2 = filename.substring(lastdot);
String downname=filename.substring(lastdot+1); //下载的时候显示出名字为PLSQL Developer 中文.rar
response.addHeader("Content-Disposition", new String(("attachment; filename=" + downname).getBytes("GBK"), "ISO-8859-1")); // 针对中文文件名
File f = new File(filename); // 你的文件
InputStream is = new FileInputStream(f); // 文件输入流
byte[] bs = new byte[1024]; // 读取缓冲区
int len;
while((len=is.read(bs))!=-1){ // 循环读取
os.write(bs,0,len); // 写入到输出流
}
is.close(); // 关闭
os.close(); // 关闭
}
%>
</body>
</html>