java从服务器上传本地图片到图片服务器

原文地址

http://blog.csdn.net/xingfeichen/article/details/54378790



1,本地上传代码

[java]  view plain  copy
  1. /** 
  2.  * 图片上传 
  3.  * </p> 
  4.  * @param avatarImgPath 
  5.  * @return 
  6.  */  
  7. private String uploadImgToServer(String avatarImgPath) {  
  8.     MultipartEntityBuilder builders = MultipartEntityBuilder.create();  
  9.     FileBody imgage = new FileBody(new File(avatarImgPath));  
  10.     builders.addPart("img1", imgage);  
  11.     HttpEntity reqEntitys = builders.build();  
  12.     String results = HttpClientPostUtils  
  13.             .postMultiPart("http://192.168.0.221:8080/uploadweb/imgUpload/taskExecuteImg", reqEntitys);  
  14.     return results;  
  15. }  

[java]  view plain  copy
  1. public static String postMultiPart(String url,HttpEntity reqEntity){  
  2.         CloseableHttpClient httpclient = HttpClients.createDefault();  
  3.         try{  
  4.                
  5.             HttpPost method = new HttpPost(url);  
  6.             // MultipartEntity reqEntity = new MultipartEntity();    
  7.               
  8.             method.setEntity(reqEntity);  
  9.              CloseableHttpResponse response = httpclient.execute(method);  
  10.              try{              
  11.             //HttpResponse response=httpClient.execute(method);   
  12.             int statusCode = response.getStatusLine().getStatusCode();  
  13.             if(statusCode == HttpStatus.SC_OK){  
  14.                 String body=EntityUtils.toString(response.getEntity());   
  15.                 return body;    
  16.             }}finally{  
  17.                  response.close();  
  18.              }  
  19.         }catch(Exception e){  
  20.             e.printStackTrace();  
  21.         }finally{  
  22.             try {  
  23.                 httpclient.close();  
  24.             } catch (IOException e) {  
  25.                 // TODO Auto-generated catch block  
  26.                 e.printStackTrace();  
  27.             }  
  28.         }  
  29.         return null;  
  30.     }  
2,服务端上图片处理代码

[java]  view plain  copy
  1. /** 
  2.      * 保存图片到本地 
  3.      * </p> 
  4.      * @param isDefaultSuffix 
  5.      *                  是否使用默认后缀名 
  6.      * @param path 
  7.      *                  图片相对路径 
  8.      * @param type 
  9.      *                  图片类型 
  10.      * @param request 
  11.      * @param response 
  12.      * @return 
  13.      */  
  14.     private String saveImgByType(boolean isDefaultSuffix, String path, String type, MultipartHttpServletRequest request,  
  15.             HttpServletResponse response) {  
  16. //      if (this.isUploadBlank(request)) {  
  17. //          logger.error("upload" + type + " img is null------上传文件为空");  
  18. //          return "";  
  19. //      }  
  20.         logger.info("upload" + type + " img start path: " + path);  
  21.         Iterator<String> itr = request.getFileNames();  
  22.         MultipartFile mpf = null;  
  23.         while (itr.hasNext()) {  
  24.             try {  
  25.                 mpf = request.getFile(itr.next());  
  26.                 if(mpf.isEmpty()){  
  27.                     logger.error("upload" + type + " img is null------上传文件为空");  
  28.                     return null;  
  29.                 }  
  30.                 //  
  31.                 int imgSzie = mpf.getInputStream().available();  
  32.                 // 获取文件名  
  33.                 String fileName = mpf.getOriginalFilename();  
  34.                 if (StringUtils.isBlank(fileName)) {  
  35.                     logger.error("文件名为空");  
  36.                     return null;  
  37.                 }  
  38.                 // 文件后缀  
  39.                 String suffix = ".png";  
  40.                 if(!isDefaultSuffix){  
  41.                     suffix = fileName.substring(fileName.lastIndexOf("."));  
  42.                 }  
  43.                 if (mpf.getSize() / 1000 <= 30000 && mpf.getSize() == imgSzie) {  
  44.                     // 图片相对路径  
  45.                     String imgPath = path;  
  46.                     if (StringUtils.isBlank(imgPath)) {  
  47.                         imgPath = "files" + File.separator + getImagePath(type) + suffix; // 获得目录下的相对路径  
  48.                     }  
  49.                     // 图片绝对路径  
  50.                     String originalName = MyFileUtil.FILE_PATH + File.separator + imgPath;  
  51.                     // 保存图片  
  52.                     MyFileUtil.saveInputStreamToFile(mpf.getInputStream(), originalName);  
  53.   
  54.                     // 只针对任务和任务执行的图片进行压缩  
  55.                     if (originalName.contains(File.separator + IMG_TYPE_TASK + File.separator)  
  56.                             || originalName.contains(File.separator + IMG_TYPE_TASKEXE + File.separator)) {  
  57.                         // 获取缩略图路径  
  58.                         String smallImgPath = getSmallImgName(originalName);  
  59.                         if (StringUtils.isNotBlank(smallImgPath)) {  
  60.                             // 临时存储变量  
  61.                             String tempPath = MyFileUtil.FILE_PATH + File.separator + "temp" + File.separator  
  62.                                     + System.currentTimeMillis() + ".png";  
  63.                             String parentPath = MyFileUtil.FILE_PATH + File.separator + "temp" + File.separator;  
  64.                             File parentFile = new File(parentPath);  
  65.                             if (!(parentFile.exists() && parentFile.isDirectory())) {  
  66.                                 parentFile.mkdir();  
  67.                             }  
  68.                             // 按比例缩放(放大缩小)false为缩小,true为放大  
  69.                             ImageUtils.scale(originalName, tempPath, 4false);  
  70.   
  71.                             ImageHelper.cutCenterImage(tempPath, smallImgPath, ImageUtils.SMALL_IMG_WIDTH,  
  72.                                     ImageUtils.SMALL_IMG_HEIGHT);  
  73.                             new File(tempPath).deleteOnExit();  
  74.                         }  
  75.                     }  
  76.                     logger.info(imgPath + " 图片上传成功");  
  77.                     return imgPath;  
  78.                 } else {  
  79.                     if (mpf.getSize() != imgSzie) {  
  80.                         logger.error("#######图片上传失败,服务器获取到图片大小(字节): " + mpf.getSize() + ", 上传图片实际大小(字节): " + imgSzie);  
  81.                     } else {  
  82.                         logger.error("单张照片不得超过30M");  
  83.                     }  
  84.                     return null;  
  85.                 }  
  86.             } catch (IOException e) {  
  87.                 logger.error(e.getMessage());  
  88.                 return null;  
  89.             }  
  90.         }  
  91.         logger.error("没有上传的图片");  
  92.         return null;  
  93.     }  

[java]  view plain  copy
  1. /** 
  2.  * 获取缩略图路径  
  3.  * <br> 
  4.  * @param originalName 
  5.  * @return 
  6.  */  
  7. private String getSmallImgName(String originalName) {  
  8.     if (StringUtils.isBlank(originalName))  
  9.         return null;  
  10.     int index = originalName.lastIndexOf(".");  
  11.     String smallPath = "";  
  12.     if (index != -1) {  
  13.         String prefix = originalName.substring(0, index);  
  14.         String suffix = originalName.substring(index + 1);  
  15.         smallPath = prefix + "_" + ImageUtils.SMALL_IMG_WIDTH + "x" + ImageUtils.SMALL_IMG_HEIGHT + "." + suffix;  
  16.     }  
  17.     return smallPath;  
  18. }  

[java]  view plain  copy
  1. /** 
  2.      * @Title: saveInputStreamToFile  
  3.      * @Description: 输入流拷贝到文件中 
  4.      * @param @param in 
  5.      * @param @param destfilePath 
  6.      * @return void   
  7.      * @throws 
  8.      */  
  9.     public static void saveInputStreamToFile(InputStream in, String destfilePath) {  
  10.         try {  
  11.             synchronized(MyFileUtil.class){  
  12.                 byte[] gif = IOUtils.toByteArray(in);  
  13.                 FileUtils.writeByteArrayToFile(new File(destfilePath), gif);  
  14.                 IOUtils.closeQuietly(in);  
  15.                 logger.info("save pic:" + destfilePath + " success, img size: " + gif.length / 1000);  
  16.             }  
  17.         } catch (Exception e) {  
  18.             logger.error(e.getMessage());  
  19.         }  
  20.     }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值