okhttp请求文件异常解决方法
微信借口中获取素材的接口返回只是一个缓存的文件流 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请求文件异常解决方法的更多相关文章
- (转)ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
早上同事用PL/SQL连接虚拟机中的Oracle数据库,发现又报了"ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务"错误,帮其解决后,发现很多人遇到过这样的问 ...
- ueditor上传大容量视频报http请求错误的解决方法
故障现象: 当使用百度编辑器ueditor上传大容量视频或大容量图片的时候,编辑器报"http请求错误"的解决方法详解: 原因分析: 目前很多CMS整合了百度的ueditor编辑器 ...
- C#操作FTP报错,远程服务器返回错误:(550)文件不可用(例如,未找到文件,无法访问文件)的解决方法
最近在做项目的时候需要操作ftp进行文件的上传下载,但在调用using (var response = (FtpWebResponse)FtpWebRequest.GetResponse())的时候总 ...
- win10系统桌面快捷键图标异常解决方法
win10系统桌面快捷键图标异常解决方法 前言: 有一次我的一个图标变成白色,找到:https://jingyan.baidu.com/article/948f5924148e67d80ef5f947 ...
- SVN Attempted to lock an already-locked dir异常解决方法
Attempted to lock an already-locked dir异常解决方法 eclipse或myeclipse用svn提交的时候报错: Attempted to lock an alr ...
- 安装visual studio2017后 首次启动出现ActivityLog.xml异常解决方法
安装visual studio2017后 首次启动出现ActivityLog.xml异常解决方法 ps:操作系统是win10 在官网下载了vs2017社区版按照教程(教程链接在文末)安装完成之后,首次 ...
- Android 异常解决方法【汇总】
(1)异常:Android中引入第三方Jar包的方法(Java.lang.NoClassDefFoundError解决办法) 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方 ...
- Tomcat部署java项目java.lang.OutOfMemoryError异常解决方法
java.lang.OutOfMemoryError异常解决方法 Window系统环境下,在catalina.bat文件第一行添加以下内容 set JAVA_OPTS=-Xms512m -Xmx512 ...
- springboot springmvc 抛出全局异常解决方法
springboot中抛出异常,springboot自带的是springmvc框架,这个就不多说了. springmvc统一异常解决方法这里要说明的是.只是结合了springboot的使用而已.直接上 ...
随机推荐
- Linq动态查询
public class ExpressionCall { List<Customer> customers = new List<Customer>() { new Cust ...
- Py't'hon之csv,ini&序列化,反序列化
1.csv文件简介 csv是一个被行分隔符,列分隔符划分成行和列的文本 csv不指定字符编码 行分隔符为\r\n,最后一行可以没有换行符 列分隔符常为逗号和制表符 每一行称之为record from ...
- input 输入速度和方向判断、搜索功能的延迟请求
1.input 输入速度和方向判断 var wxApp = {} wxApp.click = function (str,speed) { var lastInput = { d: "&qu ...
- 【报错原因】Uncaught SyntaxError: Unexpected token <
实际上是当前页面引入的js文件路径找不到!!! 页面查找不到js文件自动跳转到404.html页面 域名+/404.html
- week_one-python基础 基本语法、流程控制
金角大王的紫金葫芦,python开发环境介绍链接:http://list.youku.com/albumlist/show/id_28961509.html # Author:larlly pytho ...
- nodejs笔记之初识node
1.安装node; node -v //检测node是否安装成功 node可以做什么: 搭建服务器: 读写文件: 连接数据库: 爬虫: node的模块系统: 原生模块(如http,fs); 自定义模 ...
- 判断(if)语句
目标 开发中的应用场景 if语句体验 if语句进阶 综合应用 一 开发中的应用场景 转换成代码 判断的定义 如果 条件满足,才能做某件事 如果 条件不满足,就做另外一件事,或者什么也不做 判断语句 又 ...
- 在数据库级别还是在service层进行级联删除
在数据库配置级联删除的话,父表删除子表也删除.但是应该将维护代码放在一处,不要在service上删除父表,而在数据库层面级联删除子表,应该都在service层上进行删除.
- HDFS简单编程实例:文件合并
下图显示了HDFS文件系统中路径为“localhost:50070/explorer.html#/user/hadoop”的目录中所有的文件信息: 对于该目录下的所有文件,我们将执行以下操作: 首先, ...
- mac git 删除本地仓库文件
递归清除本地文件夹下的Git文件,如果想重新建立仓库,那么在重新初始化新建的git仓库 //删除文件夹下的所有 .git 文件 find . -name ".git" | xarg ...