前端部分
<input type="file" id="file" name="docfile" class="form-control required " accept="application/msword"/>
var formData=new FormData();
var file=$("#file")[0].files[0];
formData.append("file",file);
$.ajax({
url: '/sectionController/getFile',
type: 'POST',
cache:false,
processData: false,//不处理数据
data: formData,//直接把formData这个对象传过去
dataType : 'json',
contentType:false,// 主要设置你发送给服务器的格式,设为false代表不设置内容类型
success: function(data){
if(data.result=="success"){
alert("success");
}else{
alert("error");
}
}
});
之前以为没有设置contentType一直报参数错误的bug
后台接收——其实原理就是资源上传到服务器是以字节流的形式传的,我们只要在(想把资源存放到的路径)下新建一个同名的文件(资源的名字可以通过file.getOriginalFilename()获取),然后再吧字节流写入新建的文件中。
@RequestMapping("/getFile")
public String getPPT(HttpServletRequest request,@RequestParam("file") MultipartFile file) throws Exception{
//System.out.println(filePPT.getOriginalFilename());可获取上传资源的文件名
BufferedOutputStream stream=null;
Map<String,Object> resultMap=new HashMap<>();
String filePath="E:\\bishe\\SEWebsite\\src\\main\\webapp\\ppt\\";//资源要存放的路径
if(!file.isEmpty()){
try {
byte[] bytes=file.getBytes();
String savePath=filePath+filePPT.getOriginalFilename();
stream=new BufferedOutputStream(new FileOutputStream(new File(savePath)));
stream.write(bytes);
stream.close();
resultMap.put("result","success");
} catch (Exception e) {
resultMap.put("result","failure");
e.printStackTrace();
return JSONObject.toJSONString(resultMap).toString();
}
}else{
resultMap.put("result","failure");
return JSONObject.toJSONString(resultMap).toString();
}
return JSONObject.toJSONString(resultMap).toString();
}
上传资源是由限制的,如果资源过大,后台会报错
在application.properties中加入
#fileSize
spring.server.MaxFileSize=300MB
spring.server.MaxRequestSize=500MB
然后新建一个类来处理
@Configuration
public class TomcatConfig {
@Value("${spring.server.MaxFileSize}")
private String MaxFileSize;
@Value("${spring.server.MaxRequestSize}")
private String MaxRequestSize;
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
// 单个数据大小
factory.setMaxFileSize(MaxFileSize); // KB,MB
/// 总上传数据大小
factory.setMaxRequestSize(MaxRequestSize);
return factory.createMultipartConfig();
}
}