weixin_40763637 2018-04-23 02:21 采纳率: 0%
浏览 24677
已结题

ajax返回500 (Internal Server Error)的问题

源码如下:

$(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),已困扰一周时间,求大神点拨。

  • 写回答

7条回答

  • oyljerry 2018-04-23 02:26
    关注

    500是服务器错误,那就是你的服务器代码中看看日志出错在什么地方

    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大