簡體   English   中英

使用Java從URL下載EXE文件給我帶來兼容性錯誤

[英]Downloading EXE file from URL with Java giving me compatibility error

我正在嘗試從我的網站下載EXE文件。 舉例來說,我進入rarlab的站點,並為自己下載了64位WinRAR版本的全新安裝(我們都知道那是什么。)

無論如何,我將64位的“ setup” exe文件上傳到我的站點的根文件夾中,可以輕松下載(用於測試)。通過任何瀏覽器進入我的站點,我都可以從rarlabs成功下載“ setup”文件並像執行其他任何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";

是的,這會將文件從我的站點下載到我的文檔文件夾中,沒有任何錯誤,但是當我運行它時,出現此錯誤...

鏈接到錯誤圖像

沒有就此止步,我決定使用相同的確切的代碼來下載同一個64位的EXE“設置”文件, 只是這次從官方網站,rarlabs嘗試。 您可以相信我使用的是正確的URL,因為這一次我不僅使用此代碼下載了EXE文件,而且還能夠成功運行它!

讓我懷疑我的網站有問題,不是EXE文件? 我還應該提到我發現的一個非常重要的發現,這很可能會有所幫助。 我決定將“工作EXE”文件中的屬性與“病殘”的那個進行比較。 工作的文件大小為2.07 MB,而損壞的文件大小為375字節! 破碎的exe文件不匹配性工作EXE必須不惜一切

看到兩個文件的比較后,我想我的網站沒有錯,因為我可以通過任何瀏覽器成功下載並啟動文件,但是代碼有錯誤。

請問我任何需要解決的問題。 讓我知道我需要具體說明的地方。 謝謝大家 :)

您可能沒有下載任何有用的信息,也許服務器只是拒絕了您的請求,然后將其存儲為文件?

使用Java代碼下載的文件的大小是多少? 與您期望的文件相同嗎?

嘗試用記事本打開它,看看它是否實際上是一個exe(一些隨機的ASCII符號,而不是HTML,您會知道其中的區別)。

在服務器拒絕您的請求並返回HTML的情況下,您可能需要在請求中設置一些內容(例如cookie-您可能需要登錄以獲取該內容,user-agent屬性以及其他內容)嘗試查看通信的外觀例如通過瀏覽器完成操作,運行Firebug或其他操作,激活“網絡”標簽並查看請求的外觀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM