老问题:enctype='multipart/form-data'不能取得文本框内容的问题 我曾经想把它写近session,但是好像不成<%session.setAttribute("doc_name",doc_name);session.setAttribute("doc_desc",doc_desc);%> 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 multipart/form-data方式无法利用request.getParameter,例子代码<%@ page contentType="text/html; charset=gb2312"%><%@ include file="/DataIni/DataOpen.jsp"%><%@ include file="/ScriptLib/Init.jsp"%><% int iTotalByte,iTotalRead,iReadByte; iTotalByte=request.getContentLength(); iTotalRead=0; iReadByte=0; byte[] Buffer=new byte[iTotalByte]; if(iTotalByte>0) { for(;iTotalRead<iTotalByte;iTotalRead+=iReadByte) { try {iReadByte=request.getInputStream().read(Buffer,iTotalRead,iTotalByte-iTotalRead); } catch(Exception e) { e.printStackTrace(); } } String strContentType=request.getContentType(); //数据处理开始 String strBuffer=new String(Buffer); %><!--<br>表单数据:<br>strBuffer<br>--><% String strBoundary="--"+strContentType.substring(strContentType.lastIndexOf("=")+1,strContentType.length()); String strArray[]=strBuffer.split(strBoundary); String strSubString; int iBegin,iEnd; iBegin=0;iEnd=0; String strFieldName=""; String strFieldValue=""; String strFilePath=""; String strFileName=""; String strFileType=""; boolean bTrue; bTrue=false; int iLocation=0; for(int iIndex=1;iIndex<strArray.length-1;iIndex++) { strSubString=strArray[iIndex]; iBegin=strSubString.indexOf("name=\"",0); if(iBegin!=-1) { strFieldName="";strFieldValue=""; strFilePath="";strFileName="";strFileType=""; iEnd=strSubString.indexOf("\"",iBegin+6); strFieldName=strSubString.substring(iBegin+6,iEnd); iBegin=strSubString.indexOf("filename=\"",0); if(iBegin!=-1) { bTrue=true; } iEnd=strSubString.indexOf("\r\n\r\n",0); if(bTrue==true) { //文件路径 strFilePath=strSubString.substring(iBegin+10,strSubString.indexOf("\"",iBegin+10));strFileName=strFilePath.substring(strFilePath.lastIndexOf("\\")+1); strFileType=strSubString.substring(strSubString.indexOf("Content-Type: ")+14,strSubString.indexOf("\r\n\r\n")); %><!--<br>文件类型:<br>strFileType<br>--><% //文件数据 iBegin=strSubString.indexOf("\r\n\r\n",iBegin); strFieldValue=strSubString.substring(iBegin+4); strFieldValue=strFieldValue.substring(0,strFieldValue.lastIndexOf("\n")-1); %><!--<br>文件路径:<br>strFilePath<br>文件名称:<br>strFileName<br>--><% byte[] pFile=strFieldValue.getBytes(); byte[] pFileExtend=new byte[pFile.length]; iLocation=strBuffer.indexOf("filename=\"",iLocation); for(int kIndex=iLocation;kIndex<iTotalByte-2;kIndex++) { if(Buffer[kIndex]==13&&Buffer[kIndex+2]==13) {iLocation=kIndex+4;break;} } for(int nIndex=0;nIndex<pFile.length;nIndex++) { pFileExtend[nIndex]=Buffer[iLocation+nIndex]; }/*//保存到Local Disk;FileOutputStream pFileOutputStream=new FileOutputStream("F:\\Site_ColligateStatistic\\UploadFile\\"+strFileName);pFileOutputStream.write(pFileExtend);pFileOutputStream.close();*/ session.putValue(strFieldName+"_FileType",strFileType); session.putValue(strFieldName+"_FilePath",strFilePath); session.putValue(strFieldName+"_FileName",strFileName); session.putValue(strFieldName,pFileExtend); } else { strFieldValue=strSubString.substring(iEnd+4); strFieldValue=strFieldValue.substring(0,strFieldValue.lastIndexOf("\n")-1);session.putValue(strFieldName,strFieldValue); } bTrue=false; } %><!--<br>表单域名:<br>strFieldName<br>表单域值:<br>strFieldValue<br>--><% } //数据处理结束 String TypeValue,Id; TypeValue=(String)session.getValue("TypeValue"); if(TypeValue!=null) { int iDoAction; iDoAction=0; if(TypeValue.indexOf("Add",0)!=-1) {iDoAction=1;} if(TypeValue.indexOf("Modify")!=-1) {iDoAction=2;} if(TypeValue.indexOf("Del")!=-1) {iDoAction=3;} odbcQuery=""; Id=(String)session.getValue("RecordId"); switch(iDoAction) { case 1: odbcStmt.executeUpdate("insert into Dot(Subject) values('"+(String)session.getValue("Subject")+"')"); odbcRs=odbcStmtUpdate.executeQuery("select top 1 * from Dot order by ID desc"); if(odbcRs.next()) { byte[] OLEFile=(byte[])session.getValue("OLEFile"); odbcRs.updateBinaryStream("OLEFile",new ByteArrayInputStream(OLEFile),OLEFile.length); odbcRs.updateRow(); odbcRs.close(); response.sendRedirect("/System/Dot/List.jsp"); } break; case 2: response.sendRedirect("/System/Dot/List.jsp"); break; case 3: odbcStmt.executeUpdate("delete from Dot where ID="+Id); response.sendRedirect("/System/GeneralSystem/List.jsp"); break; } } }%><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta name="GENERATOR" content="Microsoft FrontPage 4.0"><meta name="ProgId" content="FrontPage.Editor.Document"><title></title><link rel="stylesheet" type="text/css" href="/StyleLib/Default_Style_Sheet.css"></head><body onload="window.alert('动作失败,系统取消操作!');window.location.href='/System/Dot/List.jsp';"><%@ include file="/TemplateLib/Head.jsp"%><%@ include file="/TemplateLib/Tail.jsp"%><%@ include file="/DataIni/DataClose.jsp"%></body></html> 这么帖代码不负责任,其实不好,最好还是用smartupload的方法取,我也在向别的办法。 没有别的办法,不用现成的组件就只能自己实现了,如果想了解具体意义,可以参考RFC1867文档关于HTTP传递'multipart/form-data' 一个新开的商业源码站点,大家支持一下 有ERP源码和文档 http://www.czrx.com/get.asp?get=iamcfr 代数和为负整数<h1><s:property value="sum" /></h1> spring配置文件读取propertees 如何让 frame自适应高度?? JSP连接SQL2000的错误如何解决 请各位推荐个可以逐步调试JSP文件的工具 请问一下关于IIS配JSP的问题 哪位能提供一个显示投票结果的柱型图的例子? "\"转成"\\"的方法?在线 哪里有免费的javabean下载。大虾指教? 怎样将字符串转换为浮点数? 老大啊,帮帮忙!!!!重分求救!!!!!!! 如何CLASSPATH下的resource.properties文件进行读写操作?
<%@ page contentType="text/html; charset=gb2312"%>
<%@ include file="/DataIni/DataOpen.jsp"%>
<%@ include file="/ScriptLib/Init.jsp"%>
<%
int iTotalByte,iTotalRead,iReadByte;
iTotalByte=request.getContentLength();
iTotalRead=0;
iReadByte=0;
byte[] Buffer=new byte[iTotalByte];
if(iTotalByte>0)
{
for(;iTotalRead<iTotalByte;iTotalRead+=iReadByte)
{
try
{
iReadByte=request.getInputStream().read(Buffer,iTotalRead,iTotalByte-iTotalRead);
}
catch(Exception e)
{
e.printStackTrace();
}
}
String strContentType=request.getContentType();
//数据处理开始
String strBuffer=new String(Buffer);
%><!--<br>表单数据:<br>strBuffer<br>--><%
String strBoundary="--"+strContentType.substring(strContentType.lastIndexOf("=")+1,strContentType.length());
String strArray[]=strBuffer.split(strBoundary); String strSubString;
int iBegin,iEnd;
iBegin=0;iEnd=0;
String strFieldName="";
String strFieldValue="";
String strFilePath="";
String strFileName="";
String strFileType="";
boolean bTrue;
bTrue=false;
int iLocation=0;
for(int iIndex=1;iIndex<strArray.length-1;iIndex++)
{
strSubString=strArray[iIndex];
iBegin=strSubString.indexOf("name=\"",0);
if(iBegin!=-1)
{
strFieldName="";strFieldValue="";
strFilePath="";strFileName="";strFileType="";
iEnd=strSubString.indexOf("\"",iBegin+6);
strFieldName=strSubString.substring(iBegin+6,iEnd);
iBegin=strSubString.indexOf("filename=\"",0); if(iBegin!=-1)
{
bTrue=true;
}
iEnd=strSubString.indexOf("\r\n\r\n",0);
if(bTrue==true)
{
//文件路径
strFilePath=strSubString.substring(iBegin+10,strSubString.indexOf("\"",iBegin+10));strFileName=strFilePath.substring(strFilePath.lastIndexOf("\\")+1);
strFileType=strSubString.substring(strSubString.indexOf("Content-Type: ")+14,strSubString.indexOf("\r\n\r\n"));
%><!--<br>文件类型:<br>strFileType<br>--><%
//文件数据
iBegin=strSubString.indexOf("\r\n\r\n",iBegin);
strFieldValue=strSubString.substring(iBegin+4);
strFieldValue=strFieldValue.substring(0,strFieldValue.lastIndexOf("\n")-1);
%><!--<br>文件路径:<br>strFilePath<br>文件名称:<br>strFileName<br>--><%
byte[] pFile=strFieldValue.getBytes();
byte[] pFileExtend=new byte[pFile.length];
iLocation=strBuffer.indexOf("filename=\"",iLocation);
for(int kIndex=iLocation;kIndex<iTotalByte-2;kIndex++)
{
if(Buffer[kIndex]==13&&Buffer[kIndex+2]==13)
{iLocation=kIndex+4;break;}
}
for(int nIndex=0;nIndex<pFile.length;nIndex++)
{
pFileExtend[nIndex]=Buffer[iLocation+nIndex];
}
/*
//保存到Local Disk;
FileOutputStream pFileOutputStream=new FileOutputStream("F:\\Site_ColligateStatistic\\UploadFile\\"+strFileName);
pFileOutputStream.write(pFileExtend);
pFileOutputStream.close();
*/
session.putValue(strFieldName+"_FileType",strFileType);
session.putValue(strFieldName+"_FilePath",strFilePath);
session.putValue(strFieldName+"_FileName",strFileName);
session.putValue(strFieldName,pFileExtend);
}
else
{
strFieldValue=strSubString.substring(iEnd+4);
strFieldValue=strFieldValue.substring(0,strFieldValue.lastIndexOf("\n")-1);
session.putValue(strFieldName,strFieldValue);
}
bTrue=false;
}
%><!--<br>表单域名:<br>strFieldName<br>表单域值:<br>strFieldValue<br>--><%
}
//数据处理结束
String TypeValue,Id;
TypeValue=(String)session.getValue("TypeValue");
if(TypeValue!=null)
{
int iDoAction;
iDoAction=0;
if(TypeValue.indexOf("Add",0)!=-1)
{iDoAction=1;}
if(TypeValue.indexOf("Modify")!=-1)
{iDoAction=2;}
if(TypeValue.indexOf("Del")!=-1)
{iDoAction=3;}
odbcQuery="";
Id=(String)session.getValue("RecordId");
switch(iDoAction)
{
case 1:
odbcStmt.executeUpdate("insert into Dot(Subject) values('"+(String)session.getValue("Subject")+"')");
odbcRs=odbcStmtUpdate.executeQuery("select top 1 * from Dot order by ID desc");
if(odbcRs.next())
{
byte[] OLEFile=(byte[])session.getValue("OLEFile");
odbcRs.updateBinaryStream("OLEFile",new ByteArrayInputStream(OLEFile),OLEFile.length);
odbcRs.updateRow();
odbcRs.close();
response.sendRedirect("/System/Dot/List.jsp");
}
break;
case 2:
response.sendRedirect("/System/Dot/List.jsp");
break;
case 3:
odbcStmt.executeUpdate("delete from Dot where ID="+Id);
response.sendRedirect("/System/GeneralSystem/List.jsp");
break;
}
}
}
%>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title></title>
<link rel="stylesheet" type="text/css" href="/StyleLib/Default_Style_Sheet.css">
</head><body onload="window.alert('动作失败,系统取消操作!');window.location.href='/System/Dot/List.jsp';">
<%@ include file="/TemplateLib/Head.jsp"%>
<%@ include file="/TemplateLib/Tail.jsp"%>
<%@ include file="/DataIni/DataClose.jsp"%>
</body></html>
有ERP源码和文档
http://www.czrx.com/get.asp?get=iamcfr