第一步:在Spring配置中添加以下內容
<!-- 配置MultipartResolver 用於文件上傳 使用spring的CommosMultipartResolver -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
p:defaultEncoding="UTF-8" p:maxUploadSize="540000000" p:uploadTempDir="fileUpload/temp">
</bean>
第二步:編寫上傳Spring接口
/** * 上傳專報 * * @param typeId * @param userId * @param file * @return */ @ResponseBody @RequestMapping(params = "uploadDoc") public Return uploadDoc(@RequestParam(value = "file", required = true) MultipartFile file,String newFileName) { Return r = new Return(); System.out.println(newFileName); try { // 3.保存word文件 if (file != null) { // 文件存入臨時目錄 String thisFile = SaveFile.save(file, newFileName); if(thisFile!=null){ r.setE(1); r.setS("上傳專報成功!"); }else{ r.setE(0); r.setS("上傳專報失敗!"); } } } catch (Exception e) { e.printStackTrace(); r.setS("系統異常"); } return r; } /** * 保存文件到臨時目錄 * * @param files * @param 保存文件路徑包含文件名稱 * @return */ public static String save(MultipartFile files,String newFilePath) { String fileName = files.getOriginalFilename(); if (fileName == null) { return null; } File file = new File(newFilePath); if(!file.exists()){ try { FileOutputStream fop = new FileOutputStream(file); file.createNewFile(); // 獲取文件字節 byte[] contentInBytes = files.getBytes(); fop.write(contentInBytes);// 寫入本地 fop.flush(); fop.close(); return newFilePath; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } return null; }
第三步:編寫上傳程序
上傳程序所需jar:httpclient-4.5.3.jar,httpmime-4.5.3.jar
/** * 上傳文件到指定地址URL * * @param 本地文件 * @param 請求接口路徑 * @param newfilePath 其他參數 * @return 是否成功 */ public static boolean uploadFile(String filePath, String urlStr, String newfilePath) { try { String sTestsetFile = newfilePath; String sURL = urlStr;//"http://localhost:8080/qxfw/productController.do?uploadDoc"; CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost uploadFile = new HttpPost(sURL); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addTextBody("newFileName", newfilePath, ContentType.TEXT_PLAIN); // 把文件加到HTTP的post請求中 File f = new File(sTestsetFile); builder.addBinaryBody("file", new FileInputStream(f), ContentType.APPLICATION_OCTET_STREAM, f.getName()); HttpEntity multipart = builder.build(); uploadFile.setEntity(multipart); CloseableHttpResponse response = httpClient.execute(uploadFile); HttpEntity responseEntity = response.getEntity(); String sResponse = EntityUtils.toString(responseEntity, "UTF-8"); if (sResponse.contains("成功")) { return true; } else { return false; } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return false; }