JSP如何实现文件上传

时间:2016.05.05 发布人:aeiou1015

JSP如何实现文件上传

已解决问题

谷歌aeiou1015用户在2016.05.05提交了关于“新三国演义JSP如何实现文件上传”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-25T17:54:30。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,希望你能感受到,我最真诚的谢意 !

希望以下的回答,能够帮助你。

第1个回答

用户名:fangxinquai  

  程序如下:

  package问答linkman.helpe此路r;

  import***.io.*;

  importj**a.util.*;

  importjavax.servlet.http.h**ttpServletRequest;

 资祖 importj**ax.s口律告洋边或甚出脸ervlet.http.h**ttpServletResponse;

  importj**ax.ser老告论云余局vlet.ServletInputStream;

  publicclassUpLoadBean划助车各指才{

  privateStringS**e渐鲜Path=**ll;

统呼  privateS诉春呼tringFileName=n升标石合扩蒸广十连吗强ull;

  priva绿自teStringSperator=**ll;

  privateStringErrMsg="正常返回";

  privatebyte[]bt=newbyte[4096];

  privatebyte[]prebt=newbyt业练江侵己搞诗企e[4096];

  privateintt=-1;

  privatelongFileSize=-1;

  priva胞流助几斗口美首tebooleanUserDefineFileName=false;

  //////服静销以心肉想去族///////////////////////////////////////////

  publ固盐皮若市衣益参送业七icUpLoadBean(){

  FileName=bringFileName()植觉然菜素晚慢;

  }

  publicUpLoadBean(Stringsavepath){

  S镇切封刘孔陈员赶度鲁**ePath=s**epath;

  FileName=bringFileName();

  }

  //////////应基////////////////////////////////////法燃直///

  //文件名信息

  privateStringbringFileName(){

  Calendardt=Calendar.getInstance();

  Stringstr=""+dt.get(Calendar.YEAR)+dt.get(Calendar.MONTh**)+dt.get(***.DAY_OF_MONTh**);

  str=str+dt.get(Calendar.h**OUR)+dt.get(Calendar.MI**TE)+dt.get(Calendar.**COND);

  returnstr;

  }

  publicvoidsetFileName(Stringfilename){

  FileName=filename;

  UserDefineFileName=true;

  }

  publicStringgetFileName(){

  returnFileName;

  }

  /////////////////////////////////////////////////

  //上传文件主程序

  publicbooleanUpLoad(h**ttpServletRequestrequest)throwsException{

  if(S**ePath==**ll){

  setErrorMessage("未设置保存上传文件的路径");

  returnfalse;

  }

  request.setCharacterEncoding("utf-8");

  ServletInputStreamin=request.getInputStream();

  ////////////////////////////////////////////

  //获取得一行的分隔标志

  t=in.readLine(bt,0,bt.length);

  if(t!=-1){

  Sperator=newString(bt,0,t);

  Sperator=Sperator.substring(0,28);

  t=-1;

  }

  ////////////////////////////////////////////

  //取扩展名并设定文件全名

  do{

  t=in.readLine(bt,0,bt.length);

  Strings=newString(bt,0,t);

  intindex=s.indexOf("filename="");

  if(index!=-1){

  s=s.substring(index+10);

  index=s.indexOf(""");

  s=s.substring(0,index);

  index=s.lastIndexOf(".");

  if(!UserDefineFileName){

  FileName=FileName+s.substring(index);//设定文件全名

  }

  t=-1;

  }

  }while(t!=-1);

  ////////////////////////////////////////////

  //取文件内容

  FileOutputStreamout=newFileOutputStream(S**ePath+""+FileName);

  t=in.readLine(bt,0,bt.length);

  Strings=newString(bt,0,t);

  inti=s.indexOf("Content-Type:");

  if(i==-1){

  setErrorMessage("上传的不是文件");

  returnfalse;

  }else{

  in.readLine(bt,0,bt.length);//去掉一个空行

  t=-1;

  }

  booleanstate=true;

  longtrancsize=0;

  try{

  t=in.readLine(bt,0,bt.length);

  while(t!=-1){

  s=newString(bt,0,t);

  if(s.length()>28){

  s=s.substring(0,28);

  if(s.equals(Sperator)){

  bre**;

  }

  }

  /*

  if(bt[0]==45&&bt[1]==45&&bt[2]==45&&bt[3]==45&&bt[4]==45){

  bre**;

  }

  */

  if(FileSize!=-1){

  if(trancsize>=FileSize){

  thrownewException("上传文件太大");

  }

  }

  out.write(bt,0,t);

  trancsize+=t;

  t=in.readLine(bt,0,bt.length);

  }

  }catch(Exceptione){

  state=false;

  out.close();

  setErrorMessage(e.getMessage());

  Filetmp=newFile(S**ePath,FileName);

  if(!tmp.delete()){

  setErrorMessage(e.getMessage()+",**未完成");

  }

  }finally{

  if(state){

  out.close();

  }

  returnstate;

  }

  }

  /////////////////////////////////////////////////

  //上传文件错误信息

  publicvoidsetErrorMessage(Stringerrormessage){

  ErrMsg=errormessage;

  }

  publicStringgetErrorMessage(){

  returnErrMsg;

  }

  /////////////////////////////////////////////////

  //文件大小信息

  publicvoidsetFileSize(longsize){

  FileSize=size;

  }

  publiclonggetFileSize(){

  returnFileSize;

  }

  }//endclass