15 changed files with 292 additions and 27 deletions
@ -0,0 +1,124 @@ |
|||
package com.elink.esua.epdc.commons.tools.utils; |
|||
|
|||
import cn.hutool.http.HttpResponse; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import org.apache.commons.codec.binary.Base64; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.http.HttpEntity; |
|||
import sun.net.www.http.HttpClient; |
|||
|
|||
import java.io.*; |
|||
import java.net.HttpURLConnection; |
|||
import java.net.URL; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @Author LC |
|||
* @Date 2019/9/11 14:53 |
|||
*/ |
|||
public class UploadImageUtils { |
|||
|
|||
/** |
|||
* 从微信下载图片 |
|||
* @Params: [params] |
|||
* @Return: java.lang.String |
|||
* @Author: liuchuang |
|||
* @Date: 2019/9/11 17:04 |
|||
*/ |
|||
public static String downloadImageFromWx(Map<String, String> params) throws Exception { |
|||
InputStream inputStream = getMediaStream(params.get("accessTokenUrl"), params.get("mediaUrl"), params.get("mediaId"), params.get("appid"), params.get("secret")); |
|||
if (null == inputStream) { |
|||
return null; |
|||
} |
|||
byte[] data = null; |
|||
ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); |
|||
byte[] buffer = new byte[1024]; |
|||
int len = 0; |
|||
while((len = inputStream.read(buffer, 0, 1024)) != -1){ |
|||
swapStream.write(buffer, 0, len); |
|||
} |
|||
data = swapStream.toByteArray(); |
|||
String base64 = "data:image/png;base64,"+Base64.encodeBase64String(data); |
|||
return base64; |
|||
} |
|||
|
|||
/** |
|||
* 获取临时素材 |
|||
*/ |
|||
private static InputStream getMediaStream(String accessTokenUrl, String mediaUrl, String mediaId, String appid, String secret)throws IOException { |
|||
String access_token = getAccessToken(accessTokenUrl, appid, secret); |
|||
String params = "access_token=" + access_token + "&media_id=" + mediaId; |
|||
InputStream is = null; |
|||
try { |
|||
String urlNameString = mediaUrl + "?" + params; |
|||
URL urlGet = new URL(urlNameString); |
|||
HttpURLConnection http = (HttpURLConnection) urlGet.openConnection(); |
|||
http.setRequestMethod("GET"); // 必须是get方式请求
|
|||
http.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); |
|||
http.setDoOutput(true); |
|||
http.setDoInput(true); |
|||
http.connect(); |
|||
if (!http.getContentType().contains("image")) { |
|||
return null; |
|||
} |
|||
// 获取文件转化为byte流
|
|||
is = http.getInputStream(); |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} |
|||
return is; |
|||
} |
|||
|
|||
/** |
|||
* 获取微信Jsapi的accessToken |
|||
* 这里获取的获取微信Jsapi的accessToken跟小程序以及其他的不一样 |
|||
*/ |
|||
public static String getAccessToken(String accessTokenUrl, String appId, String secret) { |
|||
accessTokenUrl = accessTokenUrl.replace("APPID", appId).replace("APPSECRET", secret); |
|||
JSONObject jsonObj = doHttpGet(accessTokenUrl); |
|||
String accessToken = jsonObj.getString("access_token"); |
|||
return accessToken; |
|||
} |
|||
|
|||
/** |
|||
* 发送GET请求 |
|||
* @Params: [requestUrl, params] |
|||
* @Return: java.lang.String |
|||
* @Author: liuchuang |
|||
* @Date: 2019/8/5 14:25 |
|||
*/ |
|||
public static JSONObject doHttpGet(String requestUrl) { |
|||
JSONObject jsonObj = null; |
|||
// buffer用于接受返回的字符
|
|||
StringBuffer buffer = new StringBuffer(); |
|||
try { |
|||
// 建立URL,把请求地址给补全,其中urlEncode()方法用于把params里的参数给取出来
|
|||
URL url = new URL(requestUrl); |
|||
// 打开http连接
|
|||
HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection(); |
|||
httpUrlConn.setDoInput(true); |
|||
httpUrlConn.setRequestMethod("GET"); |
|||
httpUrlConn.connect(); |
|||
// 获得输入
|
|||
InputStream inputStream = httpUrlConn.getInputStream(); |
|||
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8"); |
|||
BufferedReader bufferedReader = new BufferedReader(inputStreamReader); |
|||
// 将bufferReader的值给放到buffer里
|
|||
String str = null; |
|||
while ((str = bufferedReader.readLine()) != null) { |
|||
buffer.append(str); |
|||
} |
|||
// 关闭bufferReader和输入流
|
|||
bufferedReader.close(); |
|||
inputStreamReader.close(); |
|||
inputStream.close(); |
|||
// 断开连接
|
|||
httpUrlConn.disconnect(); |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} |
|||
jsonObj = JSONObject.parseObject(buffer.toString()); |
|||
return jsonObj; |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,38 @@ |
|||
package com.elink.esua.epdc.dto.form; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotBlank; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* 图片上传Form DTO |
|||
* @Author LC |
|||
* @Date 2019/9/11 16:27 |
|||
*/ |
|||
@Data |
|||
public class UploadImageFormDTO implements Serializable { |
|||
private static final long serialVersionUID = -4670602967272919640L; |
|||
|
|||
/** |
|||
* 文件标识 |
|||
*/ |
|||
@NotBlank(message = "文件标识不能为空") |
|||
private String mediaId; |
|||
/** |
|||
* 获取accessToken地址 |
|||
*/ |
|||
private String accessTokenUrl; |
|||
/** |
|||
* 下载文件地址 |
|||
*/ |
|||
private String mediaUrl; |
|||
/** |
|||
* appid |
|||
*/ |
|||
private String appid; |
|||
/** |
|||
* secret |
|||
*/ |
|||
private String secret; |
|||
} |
|||
@ -0,0 +1,16 @@ |
|||
package com.elink.esua.epdc.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @Author LC |
|||
* @Date 2019/9/11 19:22 |
|||
*/ |
|||
@Data |
|||
public class UploadFormDTO implements Serializable { |
|||
private static final long serialVersionUID = -3595962954673866413L; |
|||
|
|||
private String base64String; |
|||
} |
|||
Loading…
Reference in new issue