用JSP来完成文件的上传和下载的功能
package yuanyifileup;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.PageContext;public class yuanyifileup
{
private ServletRequest request;
private ServletResponse response;
private ServletConfig config;
ServletInputStream DATA;
int FormSize;
File f1;
FileOutputStream os;
DataInputStream is;
String filename;
byte[] b;
byte t;
boolean flag=false;
public yuanyifileup()
{ }
public void initialize(ServletConfig config,HttpServletRequest request,HttpServletResponse response) throws IOException
{
this.request=request;
this.response=response;
this.config=config;
DATA = request.getInputStream();
FormSize=request.getContentLength();
}
public void initialize(PageContext pageContext) throws IOException
{
request=pageContext.getRequest();
response=pageContext.getResponse();
config=pageContext.getServletConfig();
DATA = request.getInputStream();
FormSize=request.getContentLength();
}
public boolean setFilename(String s)
{
try
{
File f1=new File(s);
os=new FileOutputStream(f1);
}
catch(IOException e)
{return(false);}
return(true);
}
public void getByte()
{
int i=0;
try
{
is=new DataInputStream(DATA);
b=new byte[FormSize];while (true)
{
try
{
t=is.readByte();
b[i]=t;
i++;
}
catch(EOFException e)
{ break;}
}
is.close();}
catch(IOException e)
{}
}public boolean save()
{
int i=0,start1=0,start2=0;
String temp="";
if (!flag)
{
getByte();
flag=true;
}
try
{
temp=new String(b,"ISO8859_1");
}
catch(UnsupportedEncodingException e)
{return(false);}start1=temp.indexOf("image/");
temp=temp.substring(start1);start1=temp.indexOf("\r\n\r\n");temp=temp.substring(start1+4);
start2=temp.indexOf(";\r\n");
if (start2!=-1)
{
temp=temp.substring(0,start2);
}
try
{
byte[] img=temp.getBytes("ISO8859_1");
for (i=0;i<img.length;i++)
{ os.write(img[i]); }
os.close();
}
catch(IOException e)
{return(false);}return(true);}
}
package yuanyifileup;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.PageContext;public class yuanyifileup
{
private ServletRequest request;
private ServletResponse response;
private ServletConfig config;
ServletInputStream DATA;
int FormSize;
File f1;
FileOutputStream os;
DataInputStream is;
String filename;
byte[] b;
byte t;
boolean flag=false;
public yuanyifileup()
{ }
public void initialize(ServletConfig config,HttpServletRequest request,HttpServletResponse response) throws IOException
{
this.request=request;
this.response=response;
this.config=config;
DATA = request.getInputStream();
FormSize=request.getContentLength();
}
public void initialize(PageContext pageContext) throws IOException
{
request=pageContext.getRequest();
response=pageContext.getResponse();
config=pageContext.getServletConfig();
DATA = request.getInputStream();
FormSize=request.getContentLength();
}
public boolean setFilename(String s)
{
try
{
File f1=new File(s);
os=new FileOutputStream(f1);
}
catch(IOException e)
{return(false);}
return(true);
}
public void getByte()
{
int i=0;
try
{
is=new DataInputStream(DATA);
b=new byte[FormSize];while (true)
{
try
{
t=is.readByte();
b[i]=t;
i++;
}
catch(EOFException e)
{ break;}
}
is.close();}
catch(IOException e)
{}
}public boolean save()
{
int i=0,start1=0,start2=0;
String temp="";
if (!flag)
{
getByte();
flag=true;
}
try
{
temp=new String(b,"ISO8859_1");
}
catch(UnsupportedEncodingException e)
{return(false);}start1=temp.indexOf("image/");
temp=temp.substring(start1);start1=temp.indexOf("\r\n\r\n");temp=temp.substring(start1+4);
start2=temp.indexOf(";\r\n");
if (start2!=-1)
{
temp=temp.substring(0,start2);
}
try
{
byte[] img=temp.getBytes("ISO8859_1");
for (i=0;i<img.length;i++)
{ os.write(img[i]); }
os.close();
}
catch(IOException e)
{return(false);}return(true);}
}
如果非要在jsp里实现,那么就把那个类放到
<%!%>
里面吧,然后再调用。这也算吧?呵呵
i am a primer!
你的save方法进行的就是这项工作:start1=temp.indexOf("image/");
temp=temp.substring(start1);start1=temp.indexOf("\r\n\r\n");temp=temp.substring(start1+4);
start2=temp.indexOf(";\r\n");
。
(该组件与jspSmartUpload 功能差不多? 不过今天好想上不了jspSmartUpload的网站? 难道不再维护了?)如果你是交作业的话,那就不必了,呵呵;
----------------------------------------down_load_sample.html------------------------------------<%@include file="/internet/common.jsp" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.GregorianCalendar" %>
<%
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
%>
<eos:notHavePriv packageName="D130201" prLogicName="pr.P_D130201_03_InsertPre">
</eos:notHavePriv>
<%
String strnow="";
SimpleDateFormat sDate = new SimpleDateFormat("yyyyMMdd");
strnow = sDate.format(GregorianCalendar.getInstance().getTime());
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>文件下载激活</title>
<SCRIPT language="JavaScript" src="/internet/scripts/checkForm.js" ></SCRIPT>
<script language="JavaScript" src="/internet/scripts/check.js"></script>
<SCRIPT language="JavaScript" src="../../js/cmisjs.js" ></SCRIPT>
<script language="JavaScript" src="../../js/calendar.js" ></script><style type="text/css">
<!--
body {
background-image: url(../../img/Abg.gif);
}
.frmBg {
background-color: #949EDE;
}
-->
</style>
<link href="../../css/css.css" rel="stylesheet" type="text/css">
</head>
<FORM METHOD="POST" ACTION="http://10.20.1.59:9080/COM/page/display_10.jsp"
ENCTYPE="multipart/form-data">
<input type="hidden" name="TEST" value="good">
<table border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="20" valign="top"><img src="../../img/3.gif"></td>
<td width="601" valign="top" background="../../img/Mb.gif" bgcolor="#949EDE"><table width="100%" height="25" border="0" cellpadding="0" cellspacing="0">
<tr>
<td> </td>
</tr>
</table></td>
<td width="17" align="right" valign="top"><img src="../../img/4.gif" width="17" height="26">
<%@ page import="java.util.GregorianCalendar" %>
<%
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
%><eos:not
</td>
</tr>
<tr>
<td valign="top" background="../../img/Mb.gif" bgcolor="#949EDE"><br>
<br>
<br>
<br>
<br>
</td>
<td valign="top" background="../../img/Mb.gif" bgcolor="#949EDE"> <table width="100%" height="346" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="326" valign="top"><br>
<table width="100%" border="1" align="center" cellpadding="3" cellspacing="0" bordercolorlight="#333333" bordercolordark="#ffffff" bgcolor="#FFFFFF">
<!--DWLayoutTable-->
<tr>
<td height="24" colspan="3" bgcolor="e6e6e6" class="xl37"><div align="center">
<p align="center"><font face="黑体"><strong>CMIS下载 报文压缩文件
激活页面</strong></font></div></td>
</tr>
<tr>
<td height="24" colspan="3" valign="top" class="xl32"> <dict:select name="CMIS_ZCWJXX/WDLB" businTypeId="BNDICT_T_WDLB" styleClass="select" >
</dict:select> </td>
</tr>
<tr>
<td height="48" colspan="3" valign="top" class="xl32"> <div align="center">
<p>请<strong>激活</strong>您要<font face="黑体"><strong>下载</strong></font>的
报文压缩文件</p>
<p>激活后,您将获得<strong>10个</strong>最新日期的<font face="黑体"><strong>CMIS报文压缩文件</strong></font></p>
</div></td>
</tr>
<tr>
<td height="29" colspan="3" valign="top" class="xl32"><!--DWLayoutEmptyCell--> </td>
</tr>
<tr>
<td width="256" height="29" valign="top"><!--DWLayoutEmptyCell--> </td>
<td width="51" valign="top" class="xl32"><input type="submit" name="Submit" value="激活">
</td>
<td width="268" valign="top"><!--DWLayoutEmptyCell--> </td>
</tr>
<tr>
<td height="24" colspan="3" valign="top" class="xl32"><!--DWLayoutEmptyCell--> </td>
</tr>
<tr>
<td height="24" colspan="3" valign="top" class="xl32"><!--DWLayoutEmptyCell--> </td>
</tr>
</table>
<br> <div align="center"><a href="http://10.20.1.59:9080/COM/page/S_D000101_01.jsp?">返回</a></div>
</td>
</tr>
</table></td>
<td valign="top" background="../../img/Mb.gif" bgcolor="#949EDE"> </td>
</tr>
<tr>
<td><img src="../../img/1.gif"></td>
<td background="../../img/Mb.gif" bgcolor="#949EDE"> </td>
<td align="right" valign="top"><img src="../../img/2.gif"></td>
</tr>
</table>
</form>
</body>
</html>
-------------------------------------------------display_10.jsp--------------------------------------------
<%@ page contentType="text/html; charset=gb2312" language="java"
import="com.jspsmart.upload.*,java.util.*" %>
<html>
<head>
<title>文件下载处理页面</title>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script> <style type="text/css"> </style> <link href="../../css/css.css" rel="stylesheet" type="text/css">
<script language="javascript">
function chakan() {
liudong.action = "S_D130201_011.htm";
liudong.submit;
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head><body>
<%
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload(); // 初始化
su.initialize(pageContext); // 设定contentDisposition为null以禁止浏览器自动打开文件,
//保证点击链接后是下载文件。若不设定,则下载的文件扩展名为
//doc时,浏览器将自动用word打开它。扩展名为pdf时,
//浏览器将用acrobat打开。
su.setContentDisposition(null); //com.jspsmart.upload.File file_down = su.getFiles().getFile(0);
//String file_down_name=file_down.getFileName(); // 下载文件
su.downloadFile("D:/ZXDATA/SEND/")
;
//把SEND目录下的所有文件名(截取日期的8位)放入数组,以备排序
int[] send_file_name_sort = new int[su.getFiles().getCount()];
for (int i = 0; i < su.getFiles().getCount(); i++) {
com.jspsmart.upload.File file_down = su.getFiles().getFile(0);
if (file_down.isMissing()) continue;
String file_date_msg = file_down.getFileName().substring(5, 12);
int file_date_int = Integer.parseInt(file_date_msg);
send_file_name_sort[i] = file_date_int;
}
Arrays.sort(send_file_name_sort); //从小到大排序(日期从较早到现在) ,排在后面的日期越新
for (int i = su.getFiles().getCount() - 1; i < su.getFiles().getCount() - 10; i--) {
out.print("<a href=" + "\"" + "http://10.20.1.59:9080/COM/page/do_download_sample.jsp" + "\">" + send_file_name_sort[i] + "</a> ");
out.println("<BR>");
}%>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CMIS下载报文 压缩文件</title><script language="JavaScript" type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script><style type="text/css"></style><link href="../../css/css.css" rel="stylesheet" type="text/css">
<script language="javascript">
function chakan(){
liudong.action = "S_D130201_011.htm";
liudong.submit;
}
</script>
</head>
<body>
<strong>以下是10个您可以下载的最新日期CMIS报文压缩文件</strong>:<br>
<a href="http://10.20.1.59:9080/COM/page/do_download.jsp">20051208</a><br>
<a href="http://10.20.1.59:9080/COM/page/do_download.jsp">20051207</a> <br>
<a href="http://10.20.1.59:9080/COM/page/do_download.jsp">20051206</a> <br>
<a href="http://10.20.1.59:9080/COM/page/do_download.jsp">20051205</a> <br>
<a href="http://10.20.1.59:9080/COM/page/do_download.jsp">20051204</a> <br>
<a href="http://10.20.1.59:9080/COM/page/do_download.jsp">20051203</a> <br>
<a href="http://10.20.1.59:9080/COM/page/do_download.jsp">20051202</a> <br>
<a href="http://10.20.1.59:9080/COM/page/do_download.jsp">20051201</a> <br>
<a href="http://10.20.1.59:9080/COM/page/do_download.jsp">20051130</a> <br>
<a href="http://10.20.1.59:9080/COM/page/do_download.jsp">20051129</a> <br>
</body>
</html>----------------------------------------------do_download.jsp----------------------------------
<%@ page contentType="text/html;charset=gb2312"
import="com.jspsmart.upload.*" %><%
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 初始化
su.initialize(pageContext);
// 设定contentDisposition为null以禁止浏览器自动打开文件,
//保证点击链接后是下载文件。若不设定,则下载的文件扩展名为
//doc时,浏览器将自动用word打开它。扩展名为pdf时,
//浏览器将用acrobat打开。
su.setContentDisposition(null);
// 下载文件
su.downloadFile("D:/ZXDATA/SEND/send20061218.zip"); //文件必须存在
%>-----------------------------------------do_download_xp.jsp---------------------------------
<%@ page contentType="text/html; charset=gb2312" language="java"
import="com.jspsmart.upload.*" %>
<html>
<head>
<title>文件下载处理页面</title>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script> <style type="text/css"> </style> <link href="../../css/css.css" rel="stylesheet" type="text/css">
<script language="javascript">
function chakan() {
liudong.action = "S_D130201_011.htm";
liudong.submit;
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head><body>
<%
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 初始化
su.initialize(pageContext);
// 设定contentDisposition为null以禁止浏览器自动打开文件,
//保证点击链接后是下载文件。若不设定,则下载的文件扩展名为
//doc时,浏览器将自动用word打开它。扩展名为pdf时,
//浏览器将用acrobat打开。
su.setContentDisposition(null); com.jspsmart.upload.File file_down = su.getFiles().getFile(0);
String file_down_name=file_down.getFileName(); // 下载文件
su.downloadFile("D:/ZXDATA/SEND/"+ file_down_name);//动态的提取可以吗 out.println("文件上传成功!<br>"); for (int i = 0; i < su.getFiles().getCount(); i++) {
com.jspsmart.upload.File file_down = su.getFiles().getFile(0);
if (file_down.isMissing()) continue;
out.println("<TABLE BORDER=1>");
out.println("<TR><TD>表单项名(FieldName)</TD><TD>"
+ file_down.getFieldName() + "</TD></TR>");
out.println("<TR><TD>文件长度(Size)</TD><TD>" +
file_down.getSize() + "</TD></TR>");
out.println("<TR><TD>文件名(FileName)</TD><TD>"
+ file_down.getFileName() + "</TD></TR>");
out.println("<TR><TD>文件扩展名(FileExt)</TD><TD>"
+ file_down.getFileExt() + "</TD></TR>");
out.println("<TR><TD>文件全名(FilePathName)</TD><TD>"
+ file_down.getFilePathName() + "</TD></TR>");
out.println("</TABLE><BR>");
}
%><a href="download.html">返回----CMIS下载报文压缩文件选择----页面</a></body>
</html>
------------------------------------------------------------------答对 的 100分!
<%@ page contentType="text/html; charset=gb2312" language="java"
import="com.jspsmart.upload.*,java.util.*" %>
<html>
<head>
<title>文件上传处理页面</title>
<style type="text/css"> </style> <link href="../../css/css.css" rel="stylesheet" type="text/css"> <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head><body>
<%
//com.jspsmart.upload.File file_down = su.getFiles().getFile(0);
//String file_down_name=file_down.getFileName(); // 下载文件
//su.downloadFile("D:/ZXDATA/SEND/");
//把SEND目录下的所有文件名(截取日期的8位)放入数组,以备排序
/* **********************************************************
//JSP那个函数可以读取某个文件夹下的所有文件名?
//并且返回这个文件夹下的文件个数,以备For循环调用时用
int[] send_file_name_sort = new int[su.getFiles().getCount()];
for (int i = 0; i < su.getFiles().getCount(); i++) {
com.jspsmart.upload.File file_down = su.getFiles().getFile(0);
if (file_down.isMissing()) continue;
String file_date_msg = file_down.getFileName().substring(5, 12);
int file_date_int = Integer.parseInt(file_date_msg);
send_file_name_sort[i] = file_date_int;
}
************************************************************** */ //******************把所有文件排序!***************************
int[] send_file_name_sort = new int[];
String[] send_file_name_10 = new String[10];
out.println("<BR>" + "-------------原来SEND文件夹中的所有CMIS压缩报文-------------" + "<BR>");
send_file_name_sort[0] = 20051201;
for (int i = 0; i < send_file_name_sort.length; i++) {
send_file_name_sort[i] = send_file_name_sort[0] + i; out.println((i + 1) + ":" + "\t\t\t" + "send" + send_file_name_sort[i] + ".zip" + "<BR>");
}
Arrays.sort(send_file_name_sort); //从小到大排序(日期从较早到现在) ,排在后面的日期越新
out.println("<BR>" + "-------------你可以下载的10个最新CMIS报文压缩文件-------------" + "<BR>");
//*************************只截取最新的十个文件*******************
for (int i = 1; i < 11; i++) {
out.println("你可以下载的CMIS报文压缩文件" + i + ":" + "<a href=" + "\"" + "../page/do_download_sample" + (i-1) + ".jsp" + "\">" + "send" + send_file_name_sort[send_file_name_sort.length - i] + ".zip" + "</a> "); send_file_name_10[i-1] = "send" + send_file_name_sort[i-1] + ".zip"; out.println("<BR>");
}
%>
<div align="center"><a href="../page/down_load_sample.html">返回</a></div></body>
</html>
------------------------------------------------- do_download_sample0.jsp-----------------------
<%@ page contentType="text/html;charset=gb2312"
import="com.jspsmart.upload.*" %><%
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 初始化
su.initialize(pageContext);
// 设定contentDisposition为null以禁止浏览器自动打开文件,
//保证点击链接后是下载文件。若不设定,则下载的文件扩展名为
//doc时,浏览器将自动用word打开它。扩展名为pdf时,
//浏览器将用acrobat打开。
su.setContentDisposition(null);
// 下载文件//****************这里的send_file_name_10[0]提示无法识别改变量*************su.downloadFile("D:/ZXDATA/SEND/"+send_file_name_10[0]);//问题的关键就在这里!如何读取display_10.jsp 文件中的send_file_name_10数组 %>
/**********后面的send_file_name_10[1]~ send_file_name_10[9]都是这个问题!**********
*****************提示无法识别改变量************
********************************问题的关键就在这里!*************************
******如何读取display_10.jsp 文件中的send_file_name_10数组***************/