微信借口中获取素材的接口返回只是一个缓存的文件流 InputStream,

接口中请求永久图片素材返回的是 InputStream;

接口项目获取到 InputStream 可以直接通过文件流写到文件中(保存文件到weixin-java-mp 项目所在服务器上)

我做的公众号管理平台需要请求 weixin-java-mp 项目去下载素材文件,两个项目不在同一台服务器上,如何将weixin-java-mp项目中获取到的这个InputStream 传递到另一个项目中,获取到之后如何解析

解决方法:文件流传递文件,通过请求微信接口获取到的文件流为java.io.InputStream,想讲输出流传递到另一个项目,需要讲输入流转化为输出流抛出去

文件流处理(服务接口)

@PostMapping("/getimage")
    public void getImage(String s,HttpServletRequest request,HttpServletResponse response) throws Exception{
        InputStream inStream = this.wxService.getMaterialService().materialImageOrVoiceDownload(s); //从微信接口获取的输入流
        byte[] data =IOUtils.toByteArray(inStream);  //讲输出流转换成字节数组
        inStream.close();  
        response.setContentType("image/png");    //设置文件格式,这里已经确定得到的是图片格式,如果时其他格式的文件,区分处理
        OutputStream stream = response.getOutputStream();  //创建输出流
        stream.write(data);    //将数据写入输出流
        stream.flush();  
        stream.close();  
    }

文件流接收

// 下载缩略图,用于本地展示
                                Response res = Okhttp.getfile(url, parameter);  //请求接口
                                InputStream in = res.body().byteStream();  //取出接口返回的文件流
                                String picurl = downloadPicture(in);   //保存文件

// 保存图片文件的方法
    public String downloadPicture(InputStream thumbmedia) {
        try {
            String curDate = DateTime.get(DateTime.FORMATYYYYMMDD, new Date());
            String folder = getFullPath() + ".." + FILE_DIR + curDate + "/";
            File dir = new File(folder);
            if (!dir.exists()) {
                dir.mkdirs();
            }
            String fileseq = seqRule.get(YmStatic.SEQ_FILEUPD_SEQ);
            String absoulteFileName = folder + fileseq; // 绝对路径
            String relativeFileName = FILE_DIR + curDate + "/" + fileseq;
            boolean saveflag = FileMan.SaveInputStream(thumbmedia, absoulteFileName);
            if (saveflag) {
                String fileType = FileType.getFileType(absoulteFileName);
                if (!StringMan.isNull(fileType)) {
                    FileMan.renameFile(absoulteFileName, absoulteFileName + "." + fileType);
                    relativeFileName += "." + fileType;
                }
                return relativeFileName;
            } else {
                return "";
            }
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

okhttp请求文件异常解决方法的更多相关文章

  1. (转)ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法

    早上同事用PL/SQL连接虚拟机中的Oracle数据库,发现又报了"ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务"错误,帮其解决后,发现很多人遇到过这样的问 ...

  2. ueditor上传大容量视频报http请求错误的解决方法

    故障现象: 当使用百度编辑器ueditor上传大容量视频或大容量图片的时候,编辑器报"http请求错误"的解决方法详解: 原因分析: 目前很多CMS整合了百度的ueditor编辑器 ...

  3. C#操作FTP报错,远程服务器返回错误:(550)文件不可用(例如,未找到文件,无法访问文件)的解决方法

    最近在做项目的时候需要操作ftp进行文件的上传下载,但在调用using (var response = (FtpWebResponse)FtpWebRequest.GetResponse())的时候总 ...

  4. win10系统桌面快捷键图标异常解决方法

    win10系统桌面快捷键图标异常解决方法 前言: 有一次我的一个图标变成白色,找到:https://jingyan.baidu.com/article/948f5924148e67d80ef5f947 ...

  5. SVN Attempted to lock an already-locked dir异常解决方法

    Attempted to lock an already-locked dir异常解决方法 eclipse或myeclipse用svn提交的时候报错: Attempted to lock an alr ...

  6. 安装visual studio2017后 首次启动出现ActivityLog.xml异常解决方法

    安装visual studio2017后 首次启动出现ActivityLog.xml异常解决方法 ps:操作系统是win10 在官网下载了vs2017社区版按照教程(教程链接在文末)安装完成之后,首次 ...

  7. Android 异常解决方法【汇总】

    (1)异常:Android中引入第三方Jar包的方法(Java.lang.NoClassDefFoundError解决办法) 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方 ...

  8. Tomcat部署java项目java.lang.OutOfMemoryError异常解决方法

    java.lang.OutOfMemoryError异常解决方法 Window系统环境下,在catalina.bat文件第一行添加以下内容 set JAVA_OPTS=-Xms512m -Xmx512 ...

  9. springboot springmvc 抛出全局异常解决方法

    springboot中抛出异常,springboot自带的是springmvc框架,这个就不多说了. springmvc统一异常解决方法这里要说明的是.只是结合了springboot的使用而已.直接上 ...

随机推荐

  1. Linq动态查询

    public class ExpressionCall { List<Customer> customers = new List<Customer>() { new Cust ...

  2. Py't'hon之csv,ini&序列化,反序列化

    1.csv文件简介 csv是一个被行分隔符,列分隔符划分成行和列的文本 csv不指定字符编码 行分隔符为\r\n,最后一行可以没有换行符 列分隔符常为逗号和制表符 每一行称之为record from ...

  3. input 输入速度和方向判断、搜索功能的延迟请求

    1.input 输入速度和方向判断 var wxApp = {} wxApp.click = function (str,speed) { var lastInput = { d: "&qu ...

  4. 【报错原因】Uncaught SyntaxError: Unexpected token <

    实际上是当前页面引入的js文件路径找不到!!! 页面查找不到js文件自动跳转到404.html页面 域名+/404.html

  5. week_one-python基础 基本语法、流程控制

    金角大王的紫金葫芦,python开发环境介绍链接:http://list.youku.com/albumlist/show/id_28961509.html # Author:larlly pytho ...

  6. nodejs笔记之初识node

    1.安装node; node -v  //检测node是否安装成功 node可以做什么: 搭建服务器: 读写文件: 连接数据库: 爬虫: node的模块系统: 原生模块(如http,fs); 自定义模 ...

  7. 判断(if)语句

    目标 开发中的应用场景 if语句体验 if语句进阶 综合应用 一 开发中的应用场景 转换成代码 判断的定义 如果 条件满足,才能做某件事 如果 条件不满足,就做另外一件事,或者什么也不做 判断语句 又 ...

  8. 在数据库级别还是在service层进行级联删除

    在数据库配置级联删除的话,父表删除子表也删除.但是应该将维护代码放在一处,不要在service上删除父表,而在数据库层面级联删除子表,应该都在service层上进行删除.

  9. HDFS简单编程实例:文件合并

    下图显示了HDFS文件系统中路径为“localhost:50070/explorer.html#/user/hadoop”的目录中所有的文件信息: 对于该目录下的所有文件,我们将执行以下操作: 首先, ...

  10. mac git 删除本地仓库文件

    递归清除本地文件夹下的Git文件,如果想重新建立仓库,那么在重新初始化新建的git仓库 //删除文件夹下的所有 .git 文件 find . -name ".git" | xarg ...