【问题标题】:Downloading EXE file from URL with Java giving me compatibility error使用Java从URL下载EXE文件给我兼容性错误
【发布时间】:2016-09-08 06:11:20
【问题描述】:

我正在尝试从我的网站下载一个 EXE 文件。举个例子,我去了 rarlab 的网站,并下载了我自己的 64 位 WinRAR 版本的全新安装(我们都知道那是什么。)

无论如何,我将 64 位“安装程序”exe 文件上传到我网站的根文件夹,可以轻松下载(用于测试目的)。通过任何浏览器访问我的网站,我可以成功下载“安装程序”从 rarlabs 文件并像任何其他 EXE 文件一样执行它。

现在,看在上帝的份上,这是我无法弄清楚的令人困惑的部分。使用这个简单的代码,我撕掉了其他一些 Stack Overflow 答案,我可以从给定的 URL 下载任何 EXE 文件。

代码...

public static void downloadEXE(URL url, String file) throws IOException {
    InputStream in = url.openStream();
    FileOutputStream fos = new FileOutputStream(new File(file));

    int length = -1;
    byte[] buffer = new byte[1024];// buffer for portion of data from
    // connection
    while ((length = in.read(buffer)) > -1) {
        fos.write(buffer, 0, length);
    }
    fos.close();
    in.close();
}

URL 和 FILE 参数在哪里...

URL url = new URL("http://www.website.com/winrar-x64-540.exe");
String file = "c:\\Users\\..\\Documents\\winrar-x64-540.exe";

是的,这会将文件从我的站点下载到我的文档文件夹中,没有任何错误,但是当我运行它时,我得到了这个错误...

LINK TO ERROR IMAGE

不止于此,我决定尝试使用相同的代码从官方网站 rarlabs 下载相同的 64 位 EXE“设置”文件EXCEPT。你可以相信我使用了正确的 URL,因为这次我不仅使用此代码下载了 EXE 文件,而且还能够成功运行它!

让我怀疑我的网站有问题,而不是 EXE 文件?我还应该提到一个非常重要的发现,我发现它很可能会有所帮助。我决定将 WORKING EXE 文件中的属性与 BROKEN 患病文件的属性进行比较。正常工作的大小为 2.07 MB,而损坏的大小高达 375 字节!损坏的 exe 与工作 exe 的属性不匹配ATALL

看到这两个文件的比较让我认为我的网站没有问题,因为我可以通过任何浏览器成功下载并启动我的文件,但代码有错误。

如果您需要解决问题,请向我提出任何问题。让我知道我需要具体说明的地方。谢谢大家。 :)

【问题讨论】:

  • 您网站上的文件有多大?
  • 这很快,它是 2.07 MB。与我在帖子中谈到的“WORKING”exe文件相同。
  • 您是否在调试器中单步执行了您的代码以了解它为何过早终止?是否有您没有告诉我们的异常消息?
  • 使用java代码下载的文件大小是多少?
  • 完全没有错误。我使用 eclipse 作为我的 IDE。我有个主意!让我试着把它放在一个线程中?

标签: java url 64-bit exe download


【解决方案1】:

您可能没有下载任何有用的东西,也许服务器只是拒绝了您的请求并将其存储为文件?

使用java代码下载的文件大小是多少?和你期待的文件一样吗?

尝试用记事本打开它,看看它是否真的是一个exe(一些随机的ASCII符号,而不是HTML,你会知道区别)。

如果服务器拒绝您的请求并返回 HTML,您可能需要在请求中设置一些内容(例如 cookie - 您可能需要登录才能获取该内容、用户代理属性、其他内容)尝试看看如何通信看起来像从浏览器完成,运行 firebug 或其他东西,激活网络选项卡并查看请求的样子。

【讨论】:

  • 在 html 文件中,我得到了一个指向实际 exe 文件的新链接。这次 src URL 使用的是我网站的 IP,而不是名称 kayzio。让我在代码中尝试一下。我会告诉你进展如何。
猜你喜欢
  • 2013-09-16
  • 2012-08-24
  • 2021-05-21
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多