收藏
回答

第三方平台提审素材接口uploadmedia 报40005?

invalid file type rid: 606ebb2b-2950d202-39a485c3

回答关注问题邀请回答
收藏

1 个回答

  • 三个梨
    三个梨
    星期四 17:11

    解决了。 filename必须带有后缀名

    星期四 17:11
    有用
    回复 1
    • 三个梨
      三个梨
      星期四 17:13
      我用httpclient fluent无法上传。一直报41005。  经过几番探索,得用原始的http请求。贴代码:




      public static String uploadmedia(String authorizerAccessToken, MultipartFile mediaFile) {
              try {
                  URL urlObj = new URL("https://api.weixin.qq.com/wxa/uploadmedia?access_token=" + authorizerAccessToken);
                  HttpURLConnection conn = (HttpURLConnection)urlObj.openConnection();
                  conn.setRequestMethod("POST");
                  conn.setDoInput(true);
                  conn.setDoOutput(true);
                  conn.setUseCaches(false);
                  conn.setRequestProperty("Connection", "Keep-Alive");
                  conn.setRequestProperty("Charset", "UTF-8");
                  String BOUNDARY = "----------" + System.currentTimeMillis();
                  conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + BOUNDARY);
                  StringBuilder sb = new StringBuilder();
                  sb.append("--");
                  sb.append(BOUNDARY);
                  sb.append("\r\n");
                  sb.append("Content-Disposition:form-data;name=\"media\";filename=\"" + mediaFile.getOriginalFilename() + "\";filelength=\"" + mediaFile.getSize() + "\"\r\n");
                  sb.append("Content-Type:application/octet-stream\r\n\r\n");
                  byte[] head = sb.toString().getBytes("utf-8");
                  OutputStream out = new DataOutputStream(conn.getOutputStream());
                  out.write(head);
                  out.write(mediaFile.getBytes());
                  byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");
                  out.write(foot);
                  out.flush();
                  out.close();
                  StringBuffer buffer = new StringBuffer();
                  BufferedReader reader = null;
                  String result = null;


                  try {
                      reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                      String line = null;


                      while((line = reader.readLine()) != null) {
                          buffer.append(line);
                      }


                      if (result == null) {
                          result = buffer.toString();
                      }
                  } catch (IOException var17) {
                      var17.printStackTrace();
                  } finally {
                      reader.close();
                  }


                  return result;
              } catch (IOException var19) {
                  logger.error(BizLog.buildLogInfo("uploadmedia: " + ExceptionUtils.getStackTrace(var19)));
                  return null;
              }
          }
      星期四 17:13
      回复
登录 后发表内容
问题标签