easy-excel读取远程地址获得文件进行上传
2023/4/5 18:22:59
本文主要是介绍easy-excel读取远程地址获得文件进行上传,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
背景
作为一个快五年的程序员,一直以来还没有自己维护过自己的技术栈,最近也是有时间,所以也是下定决心,从头开始,一步一步的夯基础。最近在系统化的学习easy-excel,今天遇到了一个问题,特意记录一下。
目的
尝试前端上传文件到文件存储器,然后请求的时候带上这个路径,后台解析这个路径,做excel的导入
原方法
之前都是上传file,后台用MultipartFile接口,然后直接调用read解析的方式。
postman调用
后端
/** * 文件上传 * <p> * 1. 创建excel对应的实体对象 参照{@link UploadData} * <p> * 2. 由于默认一行行的读取excel,所以需要创建excel一行一行的回调监听器,参照{@link UploadDataListener} * <p> * 3. 直接读即可 */ @PostMapping("upload") @ResponseBody public String upload(MultipartFile file) throws IOException { EasyExcel.read(file.getInputStream(), UploadData.class, new UploadDataListener(uploadDAO)).sheet().doRead(); return "success"; }
注释:后端的demo采用的是源码的demo,地址为:https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java
现方法
错误的案例
EasyExcel.read(url, UploadData.class, new UploadDataListener(uploadDAO)).sheet().doRead();
执行结果:
com.alibaba.excel.exception.ExcelAnalysisException: File D:\ideaWorkspace\springboot-dev\https:\dev-test-obs.obs.cn-east-3.myhuaweicloud.com\web\测试.xlsx not exists.
说明找不到路径参数,可以很明显的看到使用的是项目的路径+请求的路径,这个肯定是不行的。
问题定位
跟踪一下源码
发现这里调用的是file,file只能获得相对路径,获取不到远程路径。
那么怎么解决这个问题呢,既然这个api不好用,那还有其他的api可以调用吗,当然可以了。
正确演示
我们先百度搜一下,获得远程路径的方法
这里
主要代码如下:
`import java.net.URL;
public static void main(String[] args) {
try {
URL url = new URL("http://10.xxx/xxx/abc.xlsx");
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is,"gb2312"));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}`
运用到我们项目
/** * 这边模拟文件上传到文件服务器上,返回一个链接,需要读取这个链接然后转化为InputStream继续读取 * @param url * @return */ @PostMapping("uploadUrl") @ResponseBody public String uploadUrl( String url ) throws URISyntaxException, IOException { URL urls = new URL(url); URLConnection connection = urls.openConnection(); InputStream is = connection.getInputStream(); EasyExcel.read(is, UploadData.class, new UploadDataListener(uploadDAO)).sheet().doRead(); return "success"; }
执行结果如下
大功告成
这篇关于easy-excel读取远程地址获得文件进行上传的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升