最近遇到一个接口,需要传输一个文件,但是我只拿到了文件下载路劲 ,而别人外网不能访问,所以我想到了一个办法,先自己获取到文件,然后利用IO将文件以流的形式传输过去;
private void Dol(String HTTp_URL, String fileName) {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
URL url = new URL(HTTp_URL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
InputStream is = connection.getInputStream();
bis = new BufferedInputStream(is);
//名字截取 可以省略
File file = new File("E:/" + fileName);
FileOutputStream fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos);
int b = 0;
byte[] byArr = new byte[1024 * 4];
while ((b = bis.read(byArr)) != -1) {
bos.write(byArr, 0, b);
}
//String s = Base64.getBase64(JSONArray.toJSONString(bos.toByteArray()));
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (bis != null) {
bis.close();
}
if (bos != null) {
bos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
我是直接先保存在本地测试是否可以活到文件,当可以获取到的时候就可以将文件直接传过去:
FileInputStream fis = new FileInputStream(fileurl + fileNmae);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int count = 0;
while ((count = fis.read(buffer)) >= 0) {
baos.write(buffer, 0, count);
}
String certificateFile = new String(Base64.encode(baos.toByteArray())); // 进行Base64编码
用base64加密传输,最后解决问题。