<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
body {
background: #99FFCC;
}
</style>
</head>
<body>
<ul>
<%
//定义上载文件的最大字节
int MAX_SIZE = 10240 * 102400;
// 创建根路径的保存变量
String rootPath;
String fileName="";
//声明文件读入类
DataInputStream in;
FileOutputStream fileOut;
//取得客户端的网络地址
//获得服务器的名字
String serverName = request.getServerName();
//取得互联网程序的绝对地址
String realPath = request.getRealPath(serverName);
realPath = realPath.substring(0,realPath.lastIndexOf("\\"));
//创建文件的保存目录
rootPath = realPath + "\\upload\\";
//取得客户端上传的数据类型
String contentType = request.getContentType();
try{
if(contentType.contains("multipart/form-data")){
//读入上传的数据
in = new DataInputStream(request.getInputStream());
int formDataLength = request.getContentLength();
if(formDataLength > MAX_SIZE){
return;
}
//保存上传文件的数据
byte[] dataBytes = new byte[formDataLength];
int byteRead;
int totalBytesRead = 0;
//上传的数据保存在byte数组
while(totalBytesRead < formDataLength){
byteRead = in.read(dataBytes,totalBytesRead,formDataLength);
totalBytesRead += byteRead;
}
//根据byte数组创建字符串
String file = new String(dataBytes);
//out.println(file);
//取得上传的数据的文件名
String saveFile = file.substring(file.indexOf("filename=\"") + 10);
saveFile = saveFile.substring(0,saveFile.indexOf("\n"));
saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\""));
int lastIndex = contentType.lastIndexOf("=");
//取得数据的分隔字符串
String boundary = contentType.substring(lastIndex + 1);
//创建保存路径的文件名
fileName = rootPath + saveFile;
//out.print(fileName);
int pos;
pos = file.indexOf("filename=\"");
pos = file.indexOf("\n",pos) + 1;
pos = file.indexOf("\n",pos) + 1;
pos = file.indexOf("\n",pos) + 1;
int boundaryLocation = file.indexOf(boundary,pos) - 4;
//out.println(boundaryLocation);
//取得文件数据的开始的位置
int startPos = ((file.substring(0,pos)).getBytes()).length;
//out.println(startPos);
//取得文件数据的结束的位置
int endPos = ((file.substring(0,boundaryLocation)).getBytes()).length;
//out.println(endPos);
//检查上载文件是否存在
File checkFile = new File(fileName);
if(checkFile.exists()){
}
//检查上载文件的目录是否存在
File fileDir = new File(rootPath);
if(!fileDir.exists()){
fileDir.mkdirs();
}
//创建文件的写出类
fileOut = new FileOutputStream(fileName);
//保存文件的数据
fileOut.write(dataBytes,startPos,(endPos - startPos));
fileOut.close();
}
else{
}
}
catch(Exception ex){
throw new ServletException(ex.getMessage());
}
%>
都爆500了 还敢说代码没问题
500报错 一般指的就是提示的服务器后端代码或者逻辑错误,请注意排查代码逻辑。
报错提示 upload_jsp.java 第223行 请排查这部分代码逻辑。
将你的这里
改成
这个500是服务返回的。服务是你开发的,就和你有关。
500是服务器内部问题,就是你的处理上传逻辑的代码有问题,根据报错信息,应该是Upload_jsp页面223行代码有问题,你看下该处的逻辑
请把这个代码贴出来,HTTP状态500说明服务端报错,请仔细排查代码问题。
这玩意和服务端协商一下,不要把服务端的异常直接抛给前端,最后在服务端统一捕获转成约定好的返回码,这样前端可以根据返回码做判断并给出相应的提示。
把你这页面的代码一行行删除,排除看是哪行代码出错了
500报错 提示的服务器后端代码或者逻辑错误,请排查代码逻辑。
注:根据多年的经验,可能前端请求参数不符合后端接收参数的规范。可以排查是否是大附件导致,java服务器默认附件最大是10M,如果有大附件需求可以在底层配置调整
大致看了一下贴上来的代码,第43行初始化字节数组dataBytes的长度为前端提交的表单数据的长度,之后读取数据,然后取文件名,最后存文件。这样貌似取不到文件名,着重检查一下获取文件名称的部分,另外读取内容的时候定义的字节数组长度不应该是整个请求的长度,可以设置小点,每次读取以后将数据存到另外的数组中,最后创建的字符串才是请求中的完整字符串吧,89行后应该加一句fileOut.flush()才能将文件内容全部存盘。
此代码可能以多种方式呈现,如:500 Internal Server Error、500 Internal Server Error、Temporary Error(500)、Internal Server Error、HTTP 500 Internal Error、500 Error、HTTP Error 500、500.That’s an error。
500内部服务器错误修复方法
1、尝试刷新页面,偶尔简单的重新加载将解决难题。
2、如果刷新页面不起作用,请尝试清除浏览器cookie和缓存。
3、如果您在网站上发现此错误,则解决方案大不相同。请联系您的内容管理系统或网站管理员以获取更多帮助。
文档regsvr32 %windir% /system32/*.dll 另存为批处理cmd文件重新注册
要检查服务端报什么,发出来,帮你分析定位原因。
你都没把报错地方的代码贴出来怎么看啊
500错误,说明服务端有问题,服务端也是你开发的,servlet报错,应该是jar冲突,去掉servlet包,采用tomcat自带的。