RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏
用JSP分析multipart/form-data基于表单的文件上传
  • 作者:zhaozj
  • 发表时间:2020-12-23 10:55
  • 来源:未知

<% 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>--><%  }  //数据处理结束 }%>