用JSP分析multipart/form-data基于表单的文件上传_JSP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

用JSP分析multipart/form-data基于表单的文件上传

作者:黑客防线网安网站维护基地 来源:黑客防线网安网站维护基地 浏览次数:0

本篇关键词:JSPmultipart

<%
 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_App\\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)session.getValue("表单域名")返回表单域值,而(byte[])session.getValue("File上传控件域名")返回的字节数组就可以用new ByteArrayInputStream(byte[])调用updateBinaryStream来更新到数据库了

 

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-216-1.html
网站维护教程更新时间:2008-02-20 06:32:49  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer