我在做JSP文件上传时,本来是要用POI处理Excel的,但是在处理过程中出现点问题
后来就改用自己编写了,但是Excel格式比较复杂,本人就做了CSV格式的文件上传
1。主要变量有:
String fileName=""; //记录文件名String mulu; //记录文件的目录
2。以下就是文件上传的服务器的代码:
public void setupFile(){//上传文件 try{ //use sessionid to create a temp file. String tempFileName=sessid; //create the temp file. File temp=new File(mulu,tempFileName); FileOutputStream o=new FileOutputStream(temp); if(len>297){ //write the upload content to the temp file. InputStream in=newIn; byte b[]=new byte[1024]; int n; while((n=in.read(b))!=-1){ o.write(b,0,n); } o.close(); in.close(); //read the temp file. RandomAccessFile random=new RandomAccessFile(temp,"r"); //read Line2 to find the name of the upload file. int second=1; String secondLine=null; while(second<=2){ secondLine=random.readLine(); second++; } //get the last location of the dir char.'//'. int position=secondLine.lastIndexOf('//'); //get the name of the upload file. fileName=secondLine.substring(position+1,secondLine.length()-1); //relocate to the head of file. random.seek(0); //get the location of the char.'Enter' in Line4. long forthEndPosition=0; int forth=1; while((n=random.readByte())!=-1&&(forth<=4)){ if(n=='/n'){ forthEndPosition=random.getFilePointer(); forth++; } }
//locate the end position of the content.Count backwards 6 lines. random.seek(random.length()); long endPosition=random.getFilePointer(); long mark=endPosition; int j=1; while((mark>=0)&&(j<=6)){ mark--; random.seek(mark); n=random.readByte(); if(n=='/n'){ endPosition=random.getFilePointer(); j++; } } //建立除去表单信息的新文件 File realFile=new File(mulu,fileName); RandomAccessFile random2=new RandomAccessFile(realFile,"rw"); //locate to the begin of content.Count for 4 lines's end position. random.seek(forthEndPosition);//定位到临时文件第四行的位置 long startPoint=random.getFilePointer();//定位第六行的位置 while(startPoint<endPosition-1){//写文件 n=random.readByte(); random2.write(n); startPoint=random.getFilePointer(); } random2.close();//管理随机读写对象 random.close(); temp.delete();//删除临时文件 msgUpfile="文件读取成功!<br><br>"; } else{//没上传文件 msgUpfile="请上传文件!<br><br>"; }}catch(IOException e){msgUpfile="文件上传失败!<br><br>";e.printStackTrace();}
}