[企业微信二次开发]自建应用API获取媒体文件(初版)

该博客展示了如何使用Java从URL获取文件流,然后将其转换为字节数组或保存到本地文件。提供了两种不同的文件写入方法,分别使用了标准I/O和Apache Commons IO库。同时,博客中包含了一个工具类用于合并两个byte数组。
摘要由CSDN通过智能技术生成

仅获取文件流并转换为字节数组:

import java.net.URL;
//仅获取文件流并转换为字节数组:
String url = "https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token=xxxxxxxxxxxxxxxxxxx&media_id=xxxxxxxx";
InputStream in;
byte[] image = new byte[0];
try {
	URL uri = new URL(url);
	in = uri.openStream();
	byte[] buf = new byte[1024];
	while (in.read(buf) > 0) {
		image = Utils.byteMerger(image, buf);
	}
	in.close();
} catch (IOException e) {
	e.printStackTrace();
}

获取文件流并写入到指定文件,方法一:

import java.net.URL;
//获取文件流并写入到指定文件
String url = "https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token=xxxxxxxxxxxxxxxxxxx&media_id=xxxxxxxx";
String filePathName = "C:\\Users\\Administrator\\Desktop\\827667.png";
try {
	URL uri = new URL(url);
    InputStream in = uri.openStream();
    File file =new File(filePathName);
	 //判断文件或文件夹是否存在
    if(file.exists()){
        //不存在则创建改文件
        file.createNewFile();
    }
    FileOutputStream fo = new FileOutputStream(file);
    //byte[] image = new byte[0];
    byte[] buf = new byte[1024];
    int length = 0;
    while ((length = in.read(buf)) > 0) {
        fo.write(buf, 0, length);
        //image = Utils.byteMerger(image, buf);
    }
    in.close();
    fo.close();
	
    //FileUtils.writeByteArrayToFile(new File(filePathName),image);  
} catch (IOException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}

获取文件流并写入到指定文件,方法二:

import org.apache.commons.io.FileUtils;
import java.net.URL;
//获取文件流并写入到指定文件
String url = "https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token=xxxxxxxxxxxxxxxxxxx&media_id=xxxxxxxx";
String filePathName = "C:\\Users\\Administrator\\Desktop\\827667.png";
try {
	URL uri = new URL(url);
    InputStream in = uri.openStream();
    File file =new File(filePathName);
	 //判断文件或文件夹是否存在
    if(file.exists()){
        //不存在则创建改文件
        file.createNewFile();
    }
    byte[] image = new byte[0];
    byte[] buf = new byte[1024];
    while (in.read(buf) > 0) {
        image = Utils.byteMerger(image, buf);
    }
    in.close();
    FileUtils.writeByteArrayToFile(file,image);  
} catch (IOException e) {
	e.printStackTrace();
}

所用工具类:

//java 合并两个byte数组
public static byte[] byteMerger(byte[] byte_1, byte[] byte_2){
    byte[] newbyte = new byte[byte_1.length+byte_2.length];
    System.arraycopy(byte_1, 0, newbyte, 0, byte_1.length);
    System.arraycopy(byte_2, 0, newbyte, byte_1.length, byte_2.length);
    return newbyte;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值