package io.sdb.controller; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.constant.WxMaConstants; import com.google.common.collect.Lists; import com.google.common.io.Files; import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; import me.chanjar.weixin.common.exception.WxErrorException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; /** * <pre> * 小程序临时素材接口 * Created by BinaryWang on 2017/6/16. * </pre> * * @author <a href="https://github.com/binarywang">Binary Wang</a> */ @RestController @RequestMapping("/wechat/media") public class WxMaMediaController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private WxMaService service; /** * 上传临时素材 * * @return 素材的media_id列表,实际上如果有的话,只会有一个 */ @PostMapping("/upload") public List<String> uploadMedia(HttpServletRequest request) throws WxErrorException { CommonsMultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext()); if (!resolver.isMultipart(request)) { return Lists.newArrayList(); } MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; Iterator<String> it = multiRequest.getFileNames(); List<String> result = Lists.newArrayList(); while (it.hasNext()) { try { MultipartFile file = multiRequest.getFile(it.next()); File newFile = new File(Files.createTempDir(), file.getOriginalFilename()); this.logger.info("filePath is :" + newFile.toString()); file.transferTo(newFile); WxMediaUploadResult uploadResult = this.service.getMediaService().uploadMedia(WxMaConstants.KefuMsgType.IMAGE, newFile); this.logger.info("media_id : " + uploadResult.getMediaId()); result.add(uploadResult.getMediaId()); } catch (IOException e) { this.logger.error(e.getMessage(), e); } } return result; } /** * 下载临时素材 */ @GetMapping("/download/{mediaId}") public File getMedia(@PathVariable String mediaId) throws WxErrorException { return this.service.getMediaService().getMedia(mediaId); } }