上传excel 通过url下载文件

15 篇文章 0 订阅
/**
* 下载图片
*/
@RequestMapping("download/picture.json")
@ResponseBody
public void downLoadPicture(HttpServletResponse response) throws IOException {
// String date = DateUtils.getCurrentDate().replaceAll("-", "").substring(2);
// StringBuilder dis = new StringBuilder("attachment");
// dis.append(";fileName=").append(new String(date.getBytes("UTF8"), "ISO-8859-1")); // RFC 2184
// dis.append(";fileName*=UTF-8''"); // RFC 5987
// response.setHeader("Content-Disposition", dis.toString());
//response.setHeader("Content-Encoding", "gzip");
// validExcel(file);

// String downloadFilename = "中文.zip";//文件的名称
// downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");//转换中文否则可能会产生乱码
// response.setContentType("application/octet-stream");// 指明response的返回对象是文件流
// response.setHeader("Content-Disposition", "attachment;filename=" + downloadFilename);
Map<String, String> urlMap = exportExcelBiz.readExcle();
//
// ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
for (String nums : urlMap.keySet()) {
String url = urlMap.get(nums);
downloadImage(nums, url);
}
// zos.flush();
// zos.close();
}

/**
* 验证文件
*/
private void validExcel(MultipartFile file) {
Assert.isFalse(file == null || file.isEmpty(), ErrorEnum.参数不正确, "文件不能未空");
String extension = FilenameUtils.getExtension(file.getOriginalFilename());
Assert.isTrue("xls".equals(extension) || "xlsx".equals(extension), ErrorEnum.参数不正确, "文件格式必须为Excel");
}

private void downloadImage(String nums, String url) {
String fileName;
if (url == null) {
url = "http://127.0.0.1:7755/no.jpg";
fileName = "no" + nums + ".jpg";
} else {
fileName = nums + ".jpg";
}
try {
File file = new File("image");
if (!file.exists()) {
file.mkdirs();
}
URL url1 = new URL(url);
InputStream in = url1.openConnection().getInputStream();
Image img = ImageIO.read(in);
BufferedImage tag = new BufferedImage(550, 550, BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(img, 0, 0, 550, 550, null);
OutputStream os = new FileOutputStream(file.getPath() + "/" + fileName);//内存流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
encoder.encode(tag); // 近JPEG编码
IOUtils.copy(in, os);
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

/**
*读取excel
*/
public Map<String, String> readExcle() throws IOException {
final String path = "/xls/BJ.xls";
// String fileName = file.getOriginalFilename();
// Workbook wb = ExcelLoader.load(file.getInputStream(), fileName);
Workbook wb = ExcelLoader.load(this.getClass().getResourceAsStream(path));
List<ExcelRow> rows = ExcelReader.read(wb, 0, 0);
Assert.isTrue(!rows.isEmpty(), ErrorEnum.参数不正确, "上传数据不能为空");
Iterator<ExcelRow> iterator = rows.iterator();
ExcelRow head = iterator.next();
boolean flag = validHead(head, DOWNLOAD_IMAGE);
Assert.isTrue(flag, ErrorEnum.参数不正确, "格式不正确,请下载最新格式");
Map<String, String> urlList = new HashMap<>();
while (iterator.hasNext()) {
ExcelRow row = iterator.next();
String numberInner = row.get("A").trim();
String number = row.get("B").trim();
String cateName = row.get("C").trim();
if(Integer.valueOf(number)==10){
continue;
}
if (numberInner == null) {
urlList.put(number, null);
continue;

}
// PxCategoryPingxing categoryPingxing;
// categoryPingxing = categoryPingxingMapper.selectByName(cateName);
// if(categoryPingxing==null){
// categoryPingxing = categoryPingxingMapper.selectByNameFuzzy(cateName);
// }
// if(categoryPingxing==null){
// urlList.put(number, "name error");
// continue;
// }
// Long categoryId = categoryPingxing.getId();
String url = packetOutMapper.selectItemImageUrl(numberInner,cateName);
urlList.put(number,url);
}
return urlList;
}

/**
*验证头部
*/
public boolean validHead(ExcelRow row, String head) {
boolean flag = false;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < row.size(); i++) {
sb.append(row.get(i)).append("\t");
}
String str = StringUtils.removeEndIgnoreCase(sb.toString(), "\t");
if (head.equals(str)) {
flag = true;
}
return flag;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值