gpt4 book ai didi

ajax - 使用Spring框架上传文件和jquery-upload-file插件问题

转载 作者:行者123 更新时间:2023-12-01 22:23:17 25 4
gpt4 key购买 nike

我在通过 AJAX 从网络客户端上传文件到服务器时遇到问题。我在客户端使用以下 jQuery 库来执行文件上传:https://github.com/hayageek/jquery-upload-file

在服务器端,我使用 Spring 框架,并且按照以下 Spring 教程来构建我的服务:https://spring.io/guides/gs/uploading-files/

起初,我的服务器方法如下所示(文件被定义为@RequestParam):

@RequestMapping(value="/upload", method=RequestMethod.POST)
public @ResponseBody String handleFileUpload(@RequestParam("file") MultipartFile file){
//functionality here
}

但是每次我提交上传表单时,我都会收到来自服务器的错误请求消息,并且我的handleFileUpload()方法从未被调用。

之后,我意识到该文件没有作为请求参数发送,因此我将 file 定义为 @RequestBody,现在我的方法如下所示:

@RequestMapping(value="/upload", method=RequestMethod.POST)
public @ResponseBody String handleFileUpload(@RequestBody("file") MultipartFile file){
//functionality here
}

现在,每次提交上传表单时都会调用handleFileUpload(),但每次我想要操作文件时,我都会收到NullPointerException >.

我想避免默认提交表单,我只想通过 AJAX 直接发送到服务器。有人知道这里会发生什么吗?

最佳答案

您可以尝试将方法的签名更改为

@RequestMapping(value="/upload", method=RequestMethod.POST)
public @ResponseBody String handleFileUpload(MultipartHttpServletRequest request){
Iterator<String> iterator = request.getFileNames();
while (iterator.hasNext()) {
String fileName = iterator.next();
MultipartFile multipartFile = request.getFile(fileName);
byte[] file = multipartFile.getBytes();
...
}
...
}

这适用于我们的 web 应用程序中的 jQuery 文件上传。如果由于某种原因这确实不适合你,你可以尝试通过检查 HTTP 来隔离问题jQuery 文件上传(例如使用 Fiddler)发出的请求,并从 Spring 开始调试响应调度程序Servlet。

关于ajax - 使用Spring框架上传文件和jquery-upload-file插件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27772803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com