七牛服务器获取文件内容

项目需求中涉及到从七牛服务器上获取文件内容,并在邮件附件中展示以及能够支持预览和下载。

七牛服务器与大多数服务器相同,相信小伙伴们通过搜索引擎,都能了解到,大部分服务器获取文件内容的代码都是根据URL,获取资源内容的。

七牛当然也不例外。

故而,如果能拿到服务器上资源的URL,代码就能相对简单。如:

fileURL就是通过各种辗转获取到服务器上的资源路径;
ByteArrayOutputStream baos = URLUtils.readBaosByUrlPath(fileURL);

MailService.MailAttachment attachment = new MailService.MailAttachment(fileName + suffix, baos);
this.sendEmail(to, subject, params, "e-comrise-postinfo", attachment);
public static class MailAttachment {
        private String file_name;
        private ByteArrayOutputStream byteArrayOutputStream;

        public MailAttachment(String file_name, ByteArrayOutputStream byteArrayOutputStream) {
            this.file_name = file_name;
            this.byteArrayOutputStream = byteArrayOutputStream;
        }

        public String getFile_name() {
            return file_name;
        }

        public ByteArrayResource getResource() {
            return new ByteArrayResource(byteArrayOutputStream.toByteArray());
        }

        public void closeResource() {
            try {
                byteArrayOutputStream.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }

那么,就有小伙伴好奇我这个工具类是怎么实现的了?废话不多说,直接上代码;

public static ByteArrayOutputStream readBaosByUrlPath(String urlPath) throws IOException {
        if (!isLegalUrl(urlPath)) return null;
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

        try(InputStream inputStream =new URL(urlPath).openStream()){
            IOUtils.copy(inputStream, byteArrayOutputStream);
        }
        return byteArrayOutputStream;
    }
public static Boolean isLegalUrl(String url) {
        Pattern pattern = Pattern.compile("[a-zA-z]+://[^\\s]*");
//        Pattern p = Pattern.compile("^(http|www|ftp|)?(://)?(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*((:\\d+)?)(/(\\w+(-\\w+)*))*(\\.?(\\w)*)(\\?)?(((\\w*%)*(\\w*\\?)*(\\w*:)*(\\w*\\+)*(\\w*\\.)*(\\w*&)*(\\w*-)*(\\w*=)*(\\w*%)*(\\w*\\?)*(\\w*:)*(\\w*\\+)*(\\w*\\.)*(\\w*&)*(\\w*-)*(\\w*=)*)*(\\w*)*)$",Pattern.CASE_INSENSITIVE );
        Matcher matcher = pattern.matcher(url);
        if (matcher.find()) {
            return isConnection(url);
        } else {
            return false;
        }
    }

引入的各种包:

import org.apache.commons.io.IOUtils;
import java.net.URL;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;

如果有小伙伴想要深度了解这部分内容的话,请留言。知无不言言无不尽。前提:力所能及之下。

最后,祝愿开发路上的小伙伴们,永不脱发!

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渣渣梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值