JFinal

登录 注册
JFinal 已连续多年蝉联最受欢迎中国开源软件冠军,投出您宝贵的一票今年继续夺冠! 评选传送门

文件上传问题

@JFinal 请教老大

使用ajax上传文件,后台使用getFile();

报错:

Caused by: java.io.IOException: Separation boundary was not specified
    at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:182)
    at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:223)
    at com.jfinal.upload.MultipartRequest.wrapMultipartRequest(MultipartRequest.java:107)
    ... 24 more

评论

  • 12-05 16:56
    上传数据的格式不符合 http 的 multipart 规范引起的问题,后端的代码不用做调整,把精力放在前端解决

    建议的方式是使用 jquery form 这个 js 库来上传文件,可以完全不需要了解 ajax 的存在
  • 12-05 17:00
    @JFinal 没想到老大这么快就回复了,我看了之前的类似问题,我用了jquery form,成功了 但是直接就刷新页面了 可以不刷新页面吗,同时接收但会的数据
    $("#form1").ajaxForm({
    dataType: "json",
    success: function(ret) {
    if(ret.status){
    alert("成功!");
    }else{
    alert(ret.status);
    }
    return false;
    }
    });
  • 12-05 17:07
    @顶风战争 正确的用法 jquery form 是不会刷新页面的,因为这个是 ajax 最基本的特征。可能是你的 js 在 ajax 操作完成之后,再做了页面跳转或刷新的操作,仔细检查一下
  • 12-05 17:57
    @JFinal 返回的数据可以用ajax去接收吗,不是渲染到form表单里
  • 12-05 23:17
    @顶风战争 必然可以,ajax 本质上只是一次独立的 http 请求,而这个请求并没有规定返回什么数据,数据到达客户端怎么去处理都很自由

    jfinal 社区对于有些 ajax 请求,连 json 都没返回,直接后端 render(xxx.html) 返回的 html 片段,然后 javascript 收到 html 片段后,直接插入到现有 html 之中,极其方便

    如果是响应 json 的话,往往还要将 json 数据再拼装成 html 片段,再插入到 html 之中,反而麻烦
  • 12-07 16:09
    ajax上传文件是个伪命题 ,ajax不能按照multipart规范发送数据,所谓的ajax上传文件都是将 form 的target 指定到一个隐藏的 iframe里或者用flash,从而达到类型ajax页面不刷新的效果 。
  • 发送