import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.UUID;
/**
* 将网络图片下载到tomcat上
*
* @param imgURL图片地址。
* 例如:http://***.com/271025191524034.jpg
* @return
*/
public static String downloadImgUtil(String imgURL) {
try {
// new一个URL对象
URL url = new URL(imgURL);
// 打开链接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置请求方式为"GET"
conn.setRequestMethod("GET");
// 超时响应时间为5秒
conn.setConnectTimeout(5 * 1000);
// 通过输入流获取图片数据
InputStream inStream = conn.getInputStream();
// 得到图片的二进制数据,以二进制封装得到数据,具有通用性
byte[] data = readInputStream(inStream);
// new一个文件对象用来保存图片,默认保存当前工程根目录
// 获取项目所在路径
String mysqlPath = Thread.currentThread().getContextClassLoader()
.getResource("").toString();
// 文件夹 你自己的文件夹
String fileUrl = "static/pic_file";
// 判断操作系统 DBUtil.getOfficeHome() 在判断当前操作系统工具类中
if ("true".equals(DBUtil.getOfficeHome())) {
// linux
String[] mysqlArr = mysqlPath.split(":");
mysqlPath = mysqlArr[1];
fileUrl = mysqlPath + fileUrl;
} else if ("false".equals(DBUtil.getOfficeHome())) {
// windows
mysqlPath = mysqlPath.substring(6, mysqlPath.length());
fileUrl = mysqlPath + fileUrl;
}
File dir = new File(fileUrl);
if (!dir.exists()) {
dir.mkdir();
}
String type = getType(imgURL);
StringBuffer realName = new StringBuffer(UUID.randomUUID().toString());
realName.append(type);
String fileName = realName.toString();
File imageFile = new File(fileUrl + "/" + fileName);
// 创建输出流
FileOutputStream outStream = new FileOutputStream(imageFile);
// 写入数据
outStream.write(data);
// 关闭输出流
outStream.close();
return fileUrl + "/" + fileName;
} catch (Exception e) {
// TODO: handle exception
}
return "";
}
public static byte[] readInputStream(InputStream inStream) throws Exception {
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
// 创建一个Buffer字符串
byte[] buffer = new byte[1024];
// 每次读取的字符串长度,如果为-1,代表全部读取完毕
int len = 0;
// 使用一个输入流从buffer里把数据读取出来
while ((len = inStream.read(buffer)) != -1) {
// 用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度
outStream.write(buffer, 0, len);
}
// 关闭输入流
inStream.close();
// 把outStream里的数据写入内存
return outStream.toByteArray();
}
public static String getType(String s) {
String[] ss = s.split("\\.");// 表示用.去切割字符串
return "." + ss[ss.length - 1];// 用.连接最后一个字符串
}
public static String getTypeNoPoint(String s) {
String[] ss = s.split("\\.");// 表示用.去切割字符串
return ss[ss.length - 1];// 用.连接最后一个字符串
}
public static boolean deleteFile(String sPath) {
boolean flag = false;
File file = new File(sPath);
// 路径为文件且不为空则进行删除
if (file.isFile() && file.exists()) {
file.delete();
flag = true;
}
return flag;
}