使用Java从URL下载EXE文件,从而导致兼容性错误

时间:2016-09-08 06:11:20

标签: java url 64-bit exe downloading

我正在尝试从我的网站下载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

不停在那里,我决定尝试使用相同的精确代码下载相同的64位EXE"设置"文件 EXCEPT 这次来自官方网站,rarlabs。您可以接受我的说法我使用了正确的URL,因为这次我不仅使用此代码下载了EXE文件,而且还能够成功运行它!

让我怀疑我的网站有问题,而不是EXE文件?我还应该提到一个非常重要的发现,我发现这很有可能会有所帮助。我决定将WORKING EXE文件中的属性与BROKEN病毒文件进行比较。工作的大小为2.07 MB,而破碎的大小为375字节!破解的exe与工作程序员 AT ALL 的属性不匹配。

看到这两个文件的比较让我觉得我的网站没有错,因为我能够通过任何浏览器成功下载并启动我的文件,但代码是错误的。

如果您有任何疑问,请向我询问。让我知道我需要具体到哪里。谢谢大家。 :)

1 个答案:

答案 0 :(得分:1)

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

使用java代码下载文件的大小是多少?它与您期望的文件相同吗?

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

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