java ajax post多文件_java – Spring MVC – 使用Ajax上传多部分文件(无法解析多部分servlet请求)...

我正在尝试使用Ajax,

Spring MVC 3.2.0,Tomcat 8.0.9上传多部分文件,但无法使其工作.我在stackoverflow(

Spring upload file problems,

MultipartConfig with Servlet 3.0 on Spring MVC,…)上阅读了很多博客和类似的帖子,这似乎有类似的原因,但无法弄清楚如何解决它.奇怪的是,当文件小于1MB时上传工作,但是当录制的视频超过该大小时,会引发以下错误:

org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. null

org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:163)

org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:139)

org.springframework.web.multipart.support.MultipartFilter.doFilterInternal(MultipartFilter.java:110)

在下面,您可以看到我所做的所有配置:

> AJAX POST-Request:

var videoBlob = e.data;

var pathArray = window.location.pathname.split( '/' );

var userID;

for (i = 0; i < pathArray.length; i++) {

if (pathArray[i].toString() == "edit"){

userID = pathArray[i+1];

}

}

var fd = new FormData();

fd.append('fname', 'video');

fd.append('data', videoBlob);

$.ajax({

url: '/user/edit/uploadVideo/' + userID,

data: fd,

processData: false,

contentType: false,

type: 'POST',

success: function(data)

{

$('#result').html(data + "uploaded by FormData!");

}

});

> web.xml

contextConfigLocation

classpath*:root-context.xml

spring.profiles.default

common

org.springframework.web.context.ContextLoaderListener

appServlet

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath*:servlet-context.xml

1

appServlet

/

springMultipartFilter

springMultipartFilter

org.springframework.web.multipart.support.MultipartFilter

springMultipartFilter

/*

> servlet-context.xml

de.talentwuerfel

update

org.hibernate.dialect.MySQL5Dialect

true

class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>

>我定义MultipartResolver的root-context.xml

> Java控制器

@RequestMapping(value = "/edit/uploadVideo/{id}", method = RequestMethod.POST)

public @ResponseBody String uploadVideo(@PathVariable long id, MultipartHttpServletRequest request, HttpServletResponse response) throws IOException {

//.... file handling

}

我怎么解决这个问题?

编辑:

我尝试了建议的方法,并使用Servlet实现来管理我的视频文件上传.已进行了以下调整,但仍然会导致类似的错误:

>调整后的@Controller:

@RequestMapping(value = "/edit/uploadVideo/{id}", method = RequestMethod.POST)

public String uploadVideo(@PathVariable long id, @RequestParam("data") Part file) {

//...

}

> root控制器已被删除,我将multipartResolver添加到servlet-context.xml

> web.xml中的标记已通过以下Multipart-Configuration进行了扩展:

appServlet

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath*:servlet-context.xml

1

/tmp

20848820

418018841

1048576

但是,我仍然收到异常,无法上传大于1MB的blob文件:

Could not parse multipart servlet request; nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. null

org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:927)

org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:822)

javax.servlet.http.HttpServlet.service(HttpServlet.java:644)

org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796)

javax.servlet.http.HttpServlet.service(HttpServlet.java:725)

我实现了一个类似的文件上传,其中只选择了一个文件,并且在使用相同的配置时它完全可以发送大文件.所以我认为它与Ajax POST或附加的blob文件有什么关系?!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值