項目開發中遇到的問題,困擾了很就 故在此記錄下
由於 前後端架設了nodejs,做了前後端分離之後 。之前的ajax文件上傳插件 就出了 問題 導致大文件無法上傳 上傳慢 問題。再多次 調試之後選用formdata進行文件上傳
以下爲formdata上傳帶嗎
<body> | |
<form id= "uploadForm"> | |
<p >上傳文件: <input type="file" name="file"/></ p> | |
<input type="button" value="上傳" onclick="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 "上傳成功"; | |
} |