实现多个图片上传(上传到服务器),在内容框中实现图文混排,并将内容录入clob字段中

客户想要插入图片的时候先把几个图片上传到服务器上,成功的话服务器返回服务器这个图片的url,然后用js自动把这段url写到编辑的内容中。并录入大字段中。





<%
 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来更新到数据库了

posted on 2005-07-12 15:06  轻松逍遥子  阅读(489)  评论(0编辑  收藏  举报