**
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class FileUtil {
/*
* 根据指定URL将文件下载到指定目标位置
* urlPath 下载路径
* downloadDir 文件存放目录
*/
public String downloadFile(HttpServletRequest request, String urlPath,String targetPaht){
File file = null;
try {
// 统一资源
URL url = new URL(urlPath);
// 连接类的父类,抽象类
URLConnection urlConnection = url.openConnection();
// http的连接类
HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;
//设置超时
httpURLConnection.setConnectTimeout(1000*5);
//设置请求方式,默认是GET
httpURLConnection.setRequestMethod("GET");
// 设置字符编码
httpURLConnection.setRequestProperty("Charset", "UTF-8");
httpURLConnection.connect();
int fileLength = httpURLConnection.getContentLength();
BufferedInputStream bin = new BufferedInputStream(httpURLConnection.getInputStream());
String fileFullName = urlPath.substring(urlPath.lastIndexOf("/"));
// 指定存放位置
String path = "C:" + File.separatorChar + fileFullName;
file = new File(path);
// 校验文件夹目录是否存在,不存在就创建一个目录
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
OutputStream out = new FileOutputStream(file);
int size = 0;
int len = 0;
byte[] buf = new byte[2048];
while ((size = bin.read(buf)) != -1) {
len += size;
out.write(buf, 0, size);
System.out.println("下载了-------> " + len * 100 / fileLength + "%\n");
}
System.out.println("C:"+ File.separatorChar + urlPath.substring(urlPath.lastIndexOf("/")).split("/")[1]);
bin.close();
out.close();
System.out.println("文件下载成功!");
} catch (Exception e) {
System.out.println("文件下载失败!");
e.printStackTrace();
}finally {
return "C:"+ File.separatorChar + urlPath.substring(urlPath.lastIndexOf("/")).split("/")[1];
}
}
/**
* @从制定URL下载文件并保存到指定目录
* @param url 请求的路径
* @param targetFilePath 文件将要保存的目录
* @param method 请求方法,包括POST和GET
* @param targetName
* @return
*/
public static String downloadFileToTartetPath(String url, String targetFilePath, String method, String targetName){
//System.out.println("fileName---->"+filePath);
//创建不同的文件夹目录
File file=new File(targetFilePath);
//判断文件夹是否存在
if (!file.exists())
{
//如果文件夹不存在,则创建新的的文件夹
file.mkdirs();
}
//判断文件的保存路径后面是否以/结尾
if (!targetFilePath.endsWith("/")) {
targetFilePath += "/";
}
//目标文件 路径
String targetFileAllPath = targetFilePath + targetName;
FileOutputStream fileOut = null;
HttpURLConnection conn = null;
InputStream inputStream = null;
try
{
// 建立链接
URL httpUrl=new URL(url);
conn=(HttpURLConnection) httpUrl.openConnection();
//以Post方式提交表单,默认get方式
conn.setRequestMethod(method);
conn.setDoInput(true);
conn.setDoOutput(true);
// post方式不能使用缓存
conn.setUseCaches(false);
//连接指定的资源
conn.connect();
//获取网络输入流
inputStream=conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(inputStream);
//模板文件
fileOut = new FileOutputStream(targetFileAllPath);
BufferedOutputStream bos = new BufferedOutputStream(fileOut);
byte[] buf = new byte[4096];
int length = bis.read(buf);
//保存文件
while(length != -1)
{
bos.write(buf, 0, length);
length = bis.read(buf);
}
bos.close();
bis.close();
conn.disconnect();
} catch (Exception e)
{
e.printStackTrace();
System.out.println("抛出异常!!");
}
return targetFileAllPath;
}
// 删除目录及目录下的文件
public static void deleteAllFilesOfDir(File path) {
if (!path.exists())
return;
if (path.isFile()) {
path.delete();
return;
}
File[] files = path.listFiles();
for (int i = 0; i < files.length; i++) {
deleteAllFilesOfDir(files[i]);
}
path.delete();
}
/**
* 删除单个文件
*
* @param fileName
* 要删除的文件的文件名
* @return 单个文件删除成功返回true,否则返回false
*/
public static boolean deleteFile(String fileName) {
File file = new File(fileName);
// 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
if (file.exists() && file.isFile()) {
if (file.delete()) {
System.out.println("删除单个文件" + fileName + "成功!");
return true;
} else {
System.out.println("删除单个文件" + fileName + "失败!");
return false;
}
} else {
System.out.println("删除单个文件失败:" + fileName + "不存在!");
return false;
}
}
}
**
String templatePath = "1http://192.168.10.17:80/group1/ampc/a.word";
String contractTemplatePath= "G:/zcy-new/hetongwenjian/";
String targetName =System.currentTimeMillis()+"hetongmoban.docx";
//将templatePath 的文件下载到 contractTemplatePath
String outTemplatePath = FileUtil.downloadFileToTartetPath(templatePath,contractTemplatePath,"GET",targetName);
//删除本地文件夹及文件
FileUtil.deleteAllFilesOfDir(new File(contractFilePathAll));
//删除单个文件
FileUtil.deleteFile(outTemplatePath);
文件从服务器下载到浏览器
@Override
public Object download(String documentCode, HttpServletResponse response) throws IOException {
ShareDocumentDTO document = baseDao.findByDocumentCode(documentCode);
if (document == null) {
return new Result<>().error("下载失败,未找到相关的下载文档信息");
}
String fileName = document.getDetails().getDocumentFileName();
String fileName = URLEncoder.encode("领导带班计划、日志.docx", "utf-8");
String fileUrl = document.getDetails().getDocumentFilePath();
URL url = new URL(fileUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//设置超时间为5秒
conn.setConnectTimeout(5 * 1000);
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
try (InputStream inputStream = conn.getInputStream();
OutputStream outputStream = response.getOutputStream();) {
response.setCharacterEncoding("UTF-8");
response.setContentType("application/x-download");
response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
// 将输入流拷贝到输出流中
IOUtils.copy(inputStream, outputStream);
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
文件从本地下载到浏览器
import cn.hutool.core.io.FileUtil;
import cn.hutool.poi.word.Word07Writer;
import org.apache.poi.util.IOUtils;
try (InputStream inputStream = new FileInputStream(FileUtil.file(createFilePath));
OutputStream outputStream = response.getOutputStream();) {
response.setCharacterEncoding("UTF-8");
String fileName = URLEncoder.encode("领导带班计划、日志.docx", "utf-8");
response.setContentType("application/x-download");
response.addHeader("Content-Disposition", "attachment;filename="+fileName);
// 将输入流拷贝到输出流中
IOUtils.copy(inputStream, outputStream);
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}