SpringMVC和jQueryAjax用于文件上传,并希望在JQuery中读取SpringMVC返回的字符串
我试图在Springs MVC中创建一个API来上传文件。我使用JQuery和AJAX来调用API。我可以上传文件,但无法读取Springs MVC在AJAX调用中返回的字符串。尝试了很多事情,但没有找到任何解决办法。我想请求你的帮助。我在下面粘贴了我的AJAX调用和Springs MVC代码 AJAX调用:SpringMVC和jQueryAjax用于文件上传,并希望在JQuery中读取SpringMVC返回的字符串,jquery,ajax,api,spring-mvc,jquery-file-upload,Jquery,Ajax,Api,Spring Mvc,Jquery File Upload,我试图在Springs MVC中创建一个API来上传文件。我使用JQuery和AJAX来调用API。我可以上传文件,但无法读取Springs MVC在AJAX调用中返回的字符串。尝试了很多事情,但没有找到任何解决办法。我想请求你的帮助。我在下面粘贴了我的AJAX调用和Springs MVC代码 AJAX调用: $.ajax({ type: "POST", url: "http://localhost:8080
$.ajax({
type: "POST",
url: "http://localhost:8080/APIUtility/FileUpload",
data: data1,
processData: false,
contentType: false,
cache: false,
success: function(data){
alert("Success");
},
error: function (data) {
alert("error");
},
complete: function(data){
alert("I am from Complete");
},
});
Springs MVC API代码:
@Controller
public class MainController {
@RequestMapping(value = "/FileUpload")
public String UploadTemplate(@RequestParam(value = "uploadfile") MultipartFile file) throws Exception {
String FileStatus;
MultipartFile uploadedFile = file;
String temp_string;
file.getOriginalFilename();
try{
temp_string = uploadedFile.getOriginalFilename();
temp_string = temp_string.substring(0, temp_string.lastIndexOf("."));
System.out.println(temp_string);
temp_string=temp_string.toLowerCase();
File serverFile = new File("D://WebContent//"+ temp_string + "-template.xlsx");
BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(serverFile));
bout.write(uploadedFile.getBytes());
bout.flush();
bout.close();
FileStatus="Success";
return "Success" + FileStatus;
}
catch (Exception e) {
return "Fail";
}
}
谢谢你,
普尼思。这里有一个ajax调用。尝试使用
@ResonseBody
注释定义控制器方法的响应类型
public @ResponseBody String UploadTemplate...
谢谢你的支持。我找到了上面列出的问题的答案 问题在于跨源资源共享(CORS)。早些时候,我没有用CORS配置Springs MVC 我刚刚添加了WebConfig类并添加了下面的代码,这为我的API启用了CORS
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
}
嗨,我试过了。这对我不起作用。尽管成功地传输了文件,但在AJAX调用中总是会出现“error”部分。非常感谢。在控制台上登录时是否有任何错误?或者您可以检查http响应并为我们写一些关于它的信息(http状态等)。请求的资源上没有“Access Control Allow Origin”头。因此,不允许访问源“null”。这是我在Chrome控制台中看到的。AJAX调用中的statusText返回“error”,即使文件被放置在正确的位置。当我使用Postman时,我看到状态为200 OK received“Success”字符串。我可以请您告诉我如何在JQuery AJAX调用中读取上述状态200OK吗?请查看error函数中的数据变量。也许它告诉了我们一些有用的信息。@punitkumar,您能在ajax选项中尝试
数据类型:“text/plain”
?让我知道状态。@AtaurRahmanMunna,我这样做了,我看到statusText在文件成功上传到指定位置后仍保留“错误”。打开浏览器控制台,看看发生了什么错误?