源码如下:
$(function(){
$.validator.setDefaults({
submitHandler: function() { //表单验证成功并提交时执行
butsub();
}
});
$("#submit_form_zzjs").validate();
var flag=true;
function butsub(){
var formData = new FormData($("#submit_form_zzjs")[0]);
if(flag){
$.ajax({
url: 'publish_server_chose.jsp',
type: "POST",
data: formData,
cache: false,
processData: false,
contentType: false,
beforeSend: function(){
flag=false; //防止发送两次请求
},
success: function (data) {
flag = true;
alert("发布成功!");
parent.location.href='personal_center_server.jsp';
},
error:function(){
alert("请先入驻实验室!");
}
});
}
}
});
publish_server_chose.jsp:
System.out.println("开始处理...");
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String trid=request.getSession().getAttribute("trid").toString();
if("".equals(trid)){
response.sendRedirect("login.jsp");
}
int user_trid=Integer.parseInt(trid);
System.out.println(user_trid);
ci.adp.Table table = ci.adp.Table.getInstance("UT_JCW_SERVE");
DataRow row_one=Table.getInstance("ut_jcw_facilitor").queryDataRow("USERID="+user_trid+" AND PUBSTATE='已发布'");
DataRow row_two=table.newDataRow();
row_two.setValue("SSCID", row_one.getValueInt("TRID"));
row_two.setValue("STATE", "正在审核");
row_two.setValue("ISDELETE", "否");
String message="";
//生成文件保存目录
String savePath = getServletConfig().getServletContext()
.getRealPath("upload_publish");
//上传时生成的临时文件保存目录
String tempPath = getServletConfig().getServletContext()
.getRealPath("temp_publish");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
String ymd = sdf.format(new Date());
savePath += "/" + ymd + "";
//创建文件夹
File dirFile = new File(savePath);
if (!dirFile.exists()) {
dirFile.mkdirs();
}
tempPath += "/" + ymd + "";
//创建临时文件夹
File dirTempFile = new File(tempPath);
if (!dirTempFile.exists()) {
dirTempFile.mkdirs();
}
//创建一个DiskFileItemFactory工厂,文件解析
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(20 * 1024 * 1024); //设定使用内存超过5M时,将产生临时文件并存储于临时目录中。
factory.setRepository(new File(tempPath)); //设定存储临时文件的目录。
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
upload.setFileSizeMax(1024 * 1024); //
try {
List<FileItem> items = upload.parseRequest(request); //获取formdata表单内容
for (FileItem item : items) {
if (item.isFormField()) { //普通文本
String name = item.getFieldName();
String value = item.getString("UTF-8");//解决普通输入项的数据的中文乱码问题
if("bigclass".equals(name)){
row_two.setValue("DETAIL", value);
}else if("smallclass_zzjs_net".equals(name)){
row_two.setValue("TYPEID", value);
}
row_two.setValue(name, value);
System.out.println(name+"="+value);
} else { //附件文件
if (item.getSize() > 0) {
String filename = item.getName();
String fileFileName = item.getFieldName(); //获取name属性名称
if (filename.equals("")) {
filename = "file";
}
//获取文件名部分
filename = filename.substring(filename
.lastIndexOf("\\") + 1);
String fileExtName = filename.substring(filename
.lastIndexOf("."));
System.out.println(filename);
System.out.println(fileFileName);
InputStream in = item.getInputStream();
String saveFilename = makeFileName();
saveFilename = URLEncoder.encode(saveFilename,
"UTF-8"); //转码
//得到文件的保存目录
String realSavePath = makePath(saveFilename,
savePath);
String file_path = realSavePath + "" + saveFilename
+ fileExtName;
file_path = file_path.replaceAll("\\\\", "/");
file_path=file_path.substring(file_path.indexOf("upload"));
System.out.println(file_path);
if ("IMAGE".equals(fileFileName)) {
row_two.setValue("IMAGE", file_path);
}
//创建一个文件输出流 ,文件路径+生产的文件名.后缀
FileOutputStream out1 = new FileOutputStream(
realSavePath + "" + saveFilename
+ fileExtName);
//创建一个缓冲区
byte buffer[] = new byte[1024];
//判断输入流中的数据是否已经读完的标识
int len = 0;
//循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据
while ((len = in.read(buffer)) > 0) {
//使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath + "\\" + filename)当中
out1.write(buffer, 0, len);
}
in.close();
out1.close();
message = "文件上传成功!";
}
}
}
row_two.update();
JSONObject obj=new JSONObject();
obj.put("data",message );
out.println(obj);
} catch (FileUploadBase.FileSizeLimitExceededException e) {
response.getWriter().print("单个文件超出最大值!!!");
return;
} catch (FileUploadBase.SizeLimitExceededException e) {
e.printStackTrace();
response.getWriter().print("上传文件的总的大小超出限制的最大值!!!");
return;
} catch (Exception e) {
response.getWriter().print("文件上传失败!");
e.printStackTrace();
}
执行ajax,返回publish_server_chose.jsp 500 (Internal Server Error),已困扰一周时间,求大神点拨。