文件上传问题

@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

评论区

JFinal

2016-12-05 16:56

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

建议的方式是使用 jquery form 这个 js 库来上传文件,可以完全不需要了解 ajax 的存在

顶风战争

2016-12-05 17:00

@JFinal 没想到老大这么快就回复了,我看了之前的类似问题,我用了jquery form,成功了 但是直接就刷新页面了 可以不刷新页面吗,同时接收但会的数据
$("#form1").ajaxForm({
dataType: "json",
success: function(ret) {
if(ret.status){
alert("成功!");
}else{
alert(ret.status);
}
return false;
}
});

JFinal

2016-12-05 17:07

@顶风战争 正确的用法 jquery form 是不会刷新页面的,因为这个是 ajax 最基本的特征。可能是你的 js 在 ajax 操作完成之后,再做了页面跳转或刷新的操作,仔细检查一下

顶风战争

2016-12-05 17:57

@JFinal 返回的数据可以用ajax去接收吗,不是渲染到form表单里

JFinal

2016-12-05 23:17

@顶风战争 必然可以,ajax 本质上只是一次独立的 http 请求,而这个请求并没有规定返回什么数据,数据到达客户端怎么去处理都很自由

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

如果是响应 json 的话,往往还要将 json 数据再拼装成 html 片段,再插入到 html 之中,反而麻烦

toni

2016-12-07 16:09

ajax上传文件是个伪命题 ,ajax不能按照multipart规范发送数据,所谓的ajax上传文件都是将 form 的target 指定到一个隐藏的 iframe里或者用flash,从而达到类型ajax页面不刷新的效果 。

热门反馈

扫码入社