如何使用 spring 资源从远程 URL 读取 zip 文件?

     2023-03-06     232

关键词:

【中文标题】如何使用 spring 资源从远程 URL 读取 zip 文件?【英文标题】:How to read a zip file from remote URL using spring resource? 【发布时间】:2015-02-13 11:02:52 【问题描述】:

我只想使用内存中远程 URL 的 zip 文件,使用 spring Resource 类:

UrlResource url = new UrlResource("https://path.to.TheFile.zip");
System.out.println(url.getFile().lastModified()); //=0, so probably it did not work

结果:

Caused by: java.io.FileNotFoundException: https://path.to.TheFile.zip (The syntax for the filename, directory or media is invalid)
    at java.util.zip.ZipFile.open(Native Method) ~[?:1.7.0_51]
    at java.util.zip.ZipFile.<init>(ZipFile.java:215) ~[?:1.7.0_51]
    at java.util.zip.ZipFile.<init>(ZipFile.java:145) ~[?:1.7.0_51]
    at java.util.zip.ZipFile.<init>(ZipFile.java:159) ~[?:1.7.0_51]

这里可能有什么问题?

我无法使用url.getInputStream(),因为我无法将 IS 传递到 ZipFile: ZipFile(url.getInputStream()) //error

【问题讨论】:

“https”(安全)可能是原因吗? 我也尝试了简单的http,但错误相同。 Wiat... 为什么你同时拥有“file:”伪协议和 https 协议?它是哪一个? File 用于文件系统路径,http(s) 用于 http 路径。它们不能同时适用。 你说得对,那是一种类型。我删除了它。 【参考方案1】:

根据getFile()的javadoc:(强调我的)

此实现返回底层 URL/URI 的文件引用,前提是它引用文件系统中的文件

您应该改用getInputStream()。然后,您可以将字节数组存储到本地内存数据结构中(例如,使用StreamUtils.copyToByteArray)并处理它(查看How can I convert byte array to ZIP file)。

为了按照已编辑问题中的建议使用 ZipFile,您需要将字节数组写入临时本地文件(提示:File.createTempFile 和 FileCopyUtils.copy()),然后立即实例化 ZipFile它。

记得在必要时关闭 Stream,并在完成后删除临时文件。

【讨论】:

new ZipFile(File file) 只能以File 作为参数,没有项目或字节流... 将流读入字节数组,将其保存到一个临时的本地File(提示:File.createTempFile)并直接实例化ZipFile。请记住在必要时关闭Stream,并在完成后删除临时的File 我想/必须在内存中完全处理文件,而不是临时保存文件! 那么限制该要求的是使用ZipFile 的想法。很可能有合适的方法来解压缩内存中的字节数组。以How to decompress a gzipped data in a byte array? 或here 为例。 抱歉,我上一条评论中链接的问题适用于gzip 文件,而不是zip。要研究的正确问题是How can I convert byte array to ZIP file。

如何优雅的使用接口

...撸一篇接口的文章(interface).在编程的过程中我们应该学会如何使用接口来给变我们的生活,极大的提升自我能力。接口不是新特性,但是非常重要,下面我们来撸个接口的小例子。虚构一个DocumentStore的类,这个类负责从不同的... 查看详情

如何从javajar文件中读取资源文件?

我正在尝试从作为桌面应用程序运行的单独jar中访问jar文件中的XML文件。我可以获取我需要的文件的URL,但是当我将它传递给FileReader(作为String)时,我得到一个FileNotFoundException,说“文件名,目录名或卷标语法不正确。”作... 查看详情

如何从 Python 中的 URL 读取图像数据?

】如何从Python中的URL读取图像数据?【英文标题】:HowdoIreadimagedatafromaURLinPython?【发布时间】:2011-11-1513:22:07【问题描述】:当我们处理本地文件时,我尝试做的事情相当简单,但是当我尝试使用远程URL执行此操作时,问题就出... 查看详情

Spring Maven 从资源文件夹中读取

...folder【发布时间】:2019-10-1607:15:19【问题描述】:我正在使用SpringBoot。我想读取src/main/resources文件夹中的json文件。Filefile=newFile(this.getClass().getClassLoader().getResource(inputFileNa 查看详情

如何确定向远程 Spring Boot 服务器发送请求的 URL?

】如何确定向远程SpringBoot服务器发送请求的URL?【英文标题】:HowtodeterminetheURLtosendrequeststoforaremoteSpringbootserver?【发布时间】:2021-12-1817:38:52【问题描述】:我已经成功部署了一个Springboot服务器到AWSElasticBeanstalk,可以通过浏览... 查看详情

如何使用 Spring 从属性文件中读取

】如何使用Spring从属性文件中读取【英文标题】:HowtoreadfromapropertiesfilesusingSpring【发布时间】:2020-06-1711:39:39【问题描述】:我想使用Spring从一个属性文件中读取一个URL、一个用户名和一个密码。我在网上阅读了很多示例,它... 查看详情

如何使用php从url读取xml文件

】如何使用php从url读取xml文件【英文标题】:howtoreadxmlfilefromurlusingphp【发布时间】:2012-09-1413:56:40【问题描述】:我必须从URL读取XML文件$map_url="http://maps.google.com/maps/api/directions/xml?origin=".$merchant_address_url."&destination=".$customer 查看详情

使用@sql spring boot test从资源文件夹以外的自定义位置读取.sql文件

】使用@sqlspringboottest从资源文件夹以外的自定义位置读取.sql文件【英文标题】:Reading.sqlfilefromcustomlocationotherthanresoucesfolderusing@sqlspringboottest【发布时间】:2020-11-1400:21:13【问题描述】:您好,我已经使用springdatajpatest编写了测... 查看详情

如何使用javascript从url读取get数据?

我正在尝试将数据从一个页面传递到另一个页面。呜呜呜.mints.com?那么=something如何使用JavaScript阅读name?答案functionparseURLParams(url){varqueryStart=url.indexOf("?")+1,queryEnd=url.indexOf("#")+1||url.length+1,query=url.slice(queryStart 查看详情

Ajax 跨域请求被阻止:同源策略不允许读取远程资源

】Ajax跨域请求被阻止:同源策略不允许读取远程资源【英文标题】:AjaxCross-OriginRequestBlocked:TheSameOriginPolicydisallowsreadingtheremoteresource【发布时间】:2014-07-2012:39:19【问题描述】:我正在编写一个简单的站点,该站点将一个习语作... 查看详情

docker上的Spring启动无法从资源中读取属性文件,但可以在没有Docker的情况下使用java -jar

...无法从资源中读取属性文件,但可以在没有Docker的情况下使用java-jar【英文标题】:Springbootondockernotabletoreadapropertyfilefromresources,butthecanwithoutDockerwithjava-jar【发布时间】:2021-06-2013:34:24【问题描述】:我的SpringBoot应用程序有一个... 查看详情

如何从 Java jar 文件中读取资源文件?

】如何从Javajar文件中读取资源文件?【英文标题】:HowdoIreadaresourcefilefromaJavajarfile?【发布时间】:2010-09-2900:43:33【问题描述】:我正在尝试从作为桌面应用程序运行的单独jar访问jar文件中的XML文件。我可以获得所需文件的URL,... 查看详情

如何从 Java jar 文件中读取资源文件?

】如何从Javajar文件中读取资源文件?【英文标题】:HowdoIreadaresourcefilefromaJavajarfile?【发布时间】:2008-12-3115:46:20【问题描述】:我正在尝试从作为桌面应用程序运行的单独jar访问jar文件中的XML文件。我可以获得所需文件的URL,... 查看详情

LAMP:如何从远程 URL/文件创建 .Zip 并将其即时流式传输到客户端

】LAMP:如何从远程URL/文件创建.Zip并将其即时流式传输到客户端【英文标题】:LAMP:Howtocreate.ZipfromremoteURLs/filesandstreamittotheclientonthefly【发布时间】:2017-03-1211:29:35【问题描述】:使用S3等用于对象存储的外部服务,提供存储文件... 查看详情

如何从 Android 读取 Firebase 远程配置模板版本?

】如何从Android读取Firebase远程配置模板版本?【英文标题】:HowdoIreadtheFirebaseRemoteConfigtemplateversionfromAndroid?【发布时间】:2021-12-0220:01:09【问题描述】:在Firebase远程配置控制台上,我看到Config-Version26,其中26是配置的模板版本... 查看详情

如何使用 JSoup 从 Android 中的 url 中的嵌入式 url 获取远程视频的直接链接?

】如何使用JSoup从Android中的url中的嵌入式url获取远程视频的直接链接?【英文标题】:HowtogetdirectlinkofremotevideofromembeddedurlwithinaurlinAndroidusingJSoup?【发布时间】:2017-04-1300:26:11【问题描述】:我之前曾问过有关如何检索视频文件... 查看详情

如何使用代理上的熊猫从 url 读取_csv 文件?

】如何使用代理上的熊猫从url读取_csv文件?【英文标题】:Howtoread_csvfilefromurlwithpandasonproxy?【发布时间】:2021-05-1609:31:45【问题描述】:我在学生宿舍中使用pandas代理读取csv文件时遇到问题:drinks=pd.read_csv(\'https://raw.githubusercont... 查看详情

如何从python 3中的url读取html

】如何从python3中的url读取html【英文标题】:Howtoreadhtmlfromaurlinpython3【发布时间】:2014-07-3122:55:55【问题描述】:我查看了以前的类似问题,但更加困惑。在python3.4中,我想读取一个html页面作为字符串,给定url。在perl中,我使... 查看详情