项目开发中遇到的问题,困扰了很就 故在此记录下
由于 前后端架设了nodejs,做了前后端分离之后 。之前的ajax文件上传插件 就出了 问题 导致大文件无法上传 上传慢 问题。再多次 调试之后选用formdata进行文件上传
以下为formdata上传带吗
<body> | |
<form id= "uploadForm"> | |
<p >上传文件: <input type="file" name="file"/></ p> | |
<input type="button" value="上传" οnclick="doUpload()" /> | |
</form> | |
<script type="text/javascript"> | |
function doUpload() { | |
var formData = new FormData($( "#uploadForm" )[0]); | |
$.ajax({ | |
url: host + 'demo/uploads.htm', | |
type: 'POST', | |
data: formData, | |
async: false, | |
cache: false, | |
contentType: false, | |
processData: false, | |
success: function (returndata) { | |
alert(returndata); | |
}, | |
error: function (returndata) { | |
alert(returndata); | |
} | |
}); | |
} | |
</script> | |
</body> |
服务端代码
@Controller | |
@RequestMapping("/demo") | |
public class DemoController { | |
*/ | |
/** | |
* 文件上传 | |
* @param request | |
* @param response | |
* @return | |
*/ | |
/* | |
@ResponseBody | |
@RequestMapping("/uploads") | |
public String upload(HttpServletRequest request,HttpServletResponse response) { | |
response.setHeader("Access-Control-Allow-Origin", "*"); | |
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; | |
*/ | |
/**得到图片保存目录的真实路径**/ | |
/* | |
String logoRealPathDir = "d:/demo"; | |
*/ | |
/**根据真实路径创建目录**/ | |
/* | |
File logoSaveFile = new File(logoRealPathDir); | |
if (!logoSaveFile.exists()) | |
logoSaveFile.mkdirs(); | |
*/ | |
/**页面控件的文件流**/ | |
/* | |
MultipartFile multipartFile = multipartRequest.getFile("file"); | |
*/ | |
/**获取文件的后缀**/ | |
/* | |
System.out.println(multipartFile.getOriginalFilename()); | |
String suffix = multipartFile.getOriginalFilename().substring | |
(multipartFile.getOriginalFilename().lastIndexOf(".")); | |
*/ | |
/**拼成完整的文件保存路径加文件**/ | |
/* | |
String name = +System.currentTimeMillis() + suffix; | |
String fileName = logoRealPathDir + File.separator + name; | |
File file = new File(fileName); | |
String data = file.getPath(); | |
try { | |
multipartFile.transferTo(file); | |
} catch (IllegalStateException e) { | |
e.printStackTrace(); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
System.out.println( "上传成功:" + name); | |
return "上传成功"; | |
} |