
已解决问题
谷歌aeiou1015用户在2016.05.05提交了关于“新三国演义JSP如何实现文件上传”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-25T17:54:30。希望大家能够帮助她。详细问题描述及疑问:期待您的答案,希望你能感受到,我最真诚的谢意 !
详细问题描述及疑问:期待您的答案,希望你能感受到,我最真诚的谢意 !
程序如下:
package
import***.io.*;
impor
importja
importj**ax.ser
privateStringS**e
priva
priv
privatebyt
privatebyte[]prebt=newbyt
privatelongFileSize=-1;
priva
//////
publ
FileName=bringFileName()
}
publicUpLoadBean
S
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