|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。js 本文是一个纯Jsp的自界说的单个文件上载代码:
<%@pagecontentType="text/html;charset=GBK"%>
<%@pageimport="java.io.*"%>
<%@pageimport="java.util.*"%>
<%@pageimport="javax.servlet.*"%>
<%@pageimport="javax.servlet.http.*"%>
<html>
<head>
<title>
upFile
</title>
</head>
<bodybgcolor="#ffffff">
<center>
<%
//界说上载文件的最年夜字节
intMAX_SIZE=102400*102400;
//创立根路径的保留变量
StringrootPath;
//声明文件读进类
DataInputStreamin=null;
FileOutputStreamfileOut=null;
//获得客户真个收集地点
StringremoteAddr=request.getRemoteAddr();
//out.print(remoteAddr);
//取得服务器的名字
StringserverName=request.getServerName();
//out.print(serverName);
//获得jsp文件绝对与根地点的地点
//out.print(request.getServletPath());
//获得互联网程序的相对地点
StringrealPath=request.getRealPath(serverName);
//out.println(realPath);
realPath=realPath.substring
(0,realPath.lastIndexOf(""));
//out.print(realPath);
//创立文件的保留目次"upload"
rootPath=realPath+"upload";
//out.println(rootPath);
//获得客户端上传的数据范例
StringcontentType=request.getContentType();
//out.println
("<p>客户端上传的数据范例=
"+contentType+"</p>");
try{
if(contentType.indexOf
("multipart/form-data")>=0)
{
//读进上传的数据
in=newDataInputStream
(request.getInputStream());
intformDataLength=
request.getContentLength();
if(formDataLength>MAX_SIZE){
out.println
("<P>上传的文件字节数不成以凌驾"
+MAX_SIZE+"</p>");
return;
}
//保留上传文件的数据
bytedataBytes[]=newbyte[formDataLength];
intbyteRead=0;
inttotalBytesRead=0;
//上传的数据保留在byte数组
while(totalBytesRead<formDataLength)
{
byteRead=in.read(dataBytes,
totalBytesRead,formDataLength);
totalBytesRead+=byteRead;
}
//依据byte数组创立字符串
Stringfile=newString(dataBytes);
//out.println(file);
//获得上传的数据的文件名
StringsaveFile=file.substring
(file.indexOf("filename="")+10);
saveFile=saveFile.substring
(0,saveFile.indexOf("
"));
saveFile=saveFile.substring
(saveFile.lastIndexOf("")
+1,saveFile.indexOf("""));
intlastIndex=
contentType.lastIndexOf("=");
//获得数据的分开字符串
Stringboundary=
contentType.substring
(lastIndex+1,contentType.length());
//创立保留路径的文件名
StringfileName=rootPath+saveFile;
//out.print(fileName);
intpos;
pos=file.indexOf("filename="");
pos=file.indexOf("
",pos)+1;
pos=file.indexOf("
",pos)+1;
pos=file.indexOf("
",pos)+1;
intboundaryLocation=
file.indexOf(boundary,pos)-4;
//out.println(boundaryLocation);
//获得文件数据的入手下手的地位
intstartPos=(
(file.substring(0,pos)).getBytes()).length;
//out.println(startPos);
//获得文件数据的停止的地位
intendPos=((file.substring
(0,boundaryLocation)).getBytes()).length;
//out.println(endPos);
//反省上载文件是不是存在
FilecheckFile=newFile(fileName);
if(checkFile.exists()){
out.println("<p>"+saveFile+
"文件已存在.</p>");
}
//反省上载文件的目次是不是存在
FilefileDir=newFile(rootPath);
if(!fileDir.exists())
{
fileDir.mkdirs();
}
//创立文件的写出类
fileOut=newFileOutputStream(fileName);
//保留文件的数据
fileOut.write(dataBytes,startPos,
(endPos-startPos));
fileOut.close();
out.println("<P>"+saveFile+
"文件乐成上载.</p>");
}else{
Stringcontent=request.getContentType();
out.println
("<p>上传的数据范例不是是multipart/form-data</p>");
}
}catch(Exceptionex)
{
thrownewServletException(ex.getMessage());
}
%>
</center>
</body>
</html>
再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。 |
|