Просмотр исходного кода

[永久素材][修改]:永久素材获取

release
Stormeye Wu 7 лет назад
Родитель
Сommit
9f2275a865
1 измененных файлов: 76 добавлений и 0 удалений
  1. +76
    -0
      mlWechatOpen/src/main/java/com/iformall/controller/WechatMediaController.java

+ 76
- 0
mlWechatOpen/src/main/java/com/iformall/controller/WechatMediaController.java Просмотреть файл

@@ -0,0 +1,76 @@
package com.iformall.controller;

import com.iformall.service.WxAuthorizerInfoService;
import com.iformall.service.wechat.FmOpenService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;

/**
* Stormeye Wu
*/
@Controller
@RequestMapping("/material")
@Api(description = "微信第三方开放平台素材文件")
public class WechatMediaController {
private final Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private FmOpenService openService;

@Autowired
private WxAuthorizerInfoService authorizerInfoService;

@ApiOperation(value = "获取永久素材", notes = "")
@GetMapping("/getMedia")
@ApiImplicitParams({
@ApiImplicitParam(name = "appId", value = "appId", dataType = "String", paramType = "query", required = true),
@ApiImplicitParam(name = "mediaId", value = "mediaId", dataType = "String", paramType = "query", required = true)})
public void getMediaInfo(String appId, String mediaId, HttpServletRequest req, HttpServletResponse response) {

InputStream inputStream = null;
String filename = mediaId;
try {
WxMpService maService = openService.getWxOpenComponentService().getWxMpServiceByAppid(appId);
inputStream = maService.getMaterialService().materialImageOrVoiceDownload(mediaId);
} catch (WxErrorException e) {
logger.error("获取永久素材失败", e);
throw new RuntimeException(e);
}

try {
response.reset();
response.setContentType("application/octet-stream");
String agent = req.getHeader("user-agent");
if (agent.contains("Firefox")) {
response.setHeader("Content-disposition",
"attachment; filename="
+ new String(filename.getBytes("GB2312"),"ISO-8859-1"));
} else {
response.setHeader("Content-disposition",
"attachment; filename="
+ java.net.URLEncoder.encode(filename,"UTF-8"));
}
// 循环取出流中的数据
byte[] b = new byte[1024];
int len;
while ((len = inputStream.read(b)) > 0)
response.getOutputStream().write(b, 0, len);
inputStream.close();
} catch (Exception e) {
logger.error(e.getMessage());
}
}
}

Загрузка…
Отмена
Сохранить