From df05ebc85d0c79fb888a643f90b1f97f0bf81431 Mon Sep 17 00:00:00 2001 From: yujintao Date: Tue, 10 Dec 2019 17:27:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=9B=BE=E7=89=87=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E4=BF=AE=E6=94=B9=EF=BC=8C=E6=9C=AA=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../esua/epdc/controller/OssController.java | 2 + .../elink/esua/epdc/service/OssService.java | 12 +++++ .../epdc/service/impl/OssServiceImpl.java | 50 +++++++++++++++++-- 3 files changed, 61 insertions(+), 3 deletions(-) diff --git a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java index b06953395..02912121c 100644 --- a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java +++ b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java @@ -129,6 +129,8 @@ public class OssController { if (build instanceof AliyunCloudStorageService) { AliyunCloudStorageService aliyunCloudStorageService = (AliyunCloudStorageService) build; aliyunCloudStorageService.download(fileUrl, response); + } else { + ossService.download(fileUrl, response); } } diff --git a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/OssService.java b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/OssService.java index 6f958d6f0..e7fe79341 100644 --- a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/OssService.java +++ b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/OssService.java @@ -16,6 +16,7 @@ import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.UploadDTO; import com.elink.esua.epdc.entity.OssEntity; +import javax.servlet.http.HttpServletResponse; import java.util.Map; /** @@ -37,4 +38,15 @@ public interface OssService extends BaseService { * @date 2019/9/19 10:09 */ Result afterUpload(String url, long size); + + /** + * 根据url下载图片到浏览器 + * + * @param fileUrl + * @param response + * @return void + * @author work@yujt.net.cn + * @date 2019/12/10 17:23 + */ + void download(String fileUrl, HttpServletResponse response); } diff --git a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/impl/OssServiceImpl.java b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/impl/OssServiceImpl.java index 0572072fe..b1054b2ee 100644 --- a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/impl/OssServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/impl/OssServiceImpl.java @@ -12,9 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; import com.elink.esua.epdc.commons.tools.constant.Constant; -import com.elink.esua.epdc.commons.tools.page.PageData; -import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; -import com.elink.esua.epdc.commons.tools.constant.Constant; +import com.elink.esua.epdc.commons.tools.constant.NumConstant; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dao.OssDao; @@ -23,6 +21,11 @@ import com.elink.esua.epdc.entity.OssEntity; import com.elink.esua.epdc.service.OssService; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLEncoder; import java.util.Date; import java.util.Map; @@ -53,4 +56,45 @@ public class OssServiceImpl extends BaseServiceImpl implement return new Result().ok(dto); } + + @Override + public void download(String fileUrl, HttpServletResponse response) { + URL url; + try { + url = new URL(fileUrl); + + DataInputStream dataInputStream = new DataInputStream(url.openStream()); + if (null != dataInputStream) { + + String filename = fileUrl.substring(fileUrl.lastIndexOf("/") + 1); + // 设定输出文件头 + response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(filename, "UTF-8")); + + response.setCharacterEncoding("UTF-8"); + response.setHeader("Pragma", "No-Cache"); + response.setHeader("Cache-Control", "No-Cache"); + response.setDateHeader("Expires", 0); + response.setContentType("application/msexcel; charset=UTF-8"); + + byte[] buf = new byte[1024]; + int L; + + OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); + while ((L = dataInputStream.read(buf)) != NumConstant.ONE_NEG) { + toClient.write(buf, NumConstant.ZERO, L); + } + dataInputStream.close(); + toClient.flush(); + toClient.close(); + } + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + } + }