簡體   English   中英

如何使用 html 按鈕下載 dmg 文件?

[英]How can I use a html button to download a dmg file?

所以我前一陣子問了這個問題,它立即關閉了,所以我會提供更多細節,這個問題似乎是特定於 dmg 文件類型的,直到現在我從未遇到過這個問題。

我只是希望能夠單擊一個按鈕,然后在不使用太多 javascript 或任何東西的情況下下載 dmg。

但是,使用我的代碼,dmg 文件會在瀏覽器中打開,因此您會收到一堆二進制亂碼,如果您想查看我的意思,則不會下載該文件,然后前往https://lucas-testing.000webhostapp.com/release對於 MacOS,請單擊下載。

由於版本號是名稱的一部分,dmg 的文件名會發生變化,因此我使用 php 來獲取文件信息並創建一個變量來存儲該網站地址,例如我的 PHP 生成的當前鏈接將是:

var downloadLinkAlt = "https://lucas-testing.000webhostapp.com/release/The City Of Truro Mariners - Management Console-1.0.19.dmg"

然后我下載此鏈接的代碼是:

<button onclick="location.href=downloadLinkAlt" id="DownloadByOSAlt" class="btn btn-sm btn-primary mt-3">Download for MacOS</button>

我知道上面的代碼可以正常工作,因為它可以完美地使用完全相同的鏈接,但使用 exe 文件擴展名。

我嘗試過的事情:

可以在 HTML5 中使用的下載屬性來強制下載 PDF 之類的內容:

<button onclick="location.href=downloadLinkAlt" id="DownloadByOSAlt" class="btn btn-sm btn-primary mt-3" download>Loading...</button>

參考: https://www.w3schools.com/tags/att_a_download.asp

將按鈕放入表單並使用帶有鏈接的獲取請求:

<form method="get" action=downloadLinkAlt>
   <button type="submit">Download!</button>
</form>

參考: https://stackoverflow.com/a/11620761/12887221

使用不可見的 iframe,當按下按鈕時,它的源會發生變化:

document.getElementById('my_iframe').src = downloadLinkAlt;

<iframe id="my_iframe" style="display:none;"></iframe>

參考: https://stackoverflow.com/a/22231021/12887221

有人對下一步要嘗試什么有任何建議嗎?

可能不是您執行下載的方法被破壞,而是網絡服務器沒有為 dmg 文件提供正確的 mime 類型。 文件正在下載並且您收到的內容看起來像亂碼,這可能是一個跡象。 瀏覽器不知道會發生什么。

要查看服務器發送的 MIME 類型,請在您的瀏覽器中打開開發人員工具,單擊網絡並在列表中查看您正在下載的文件。

只是谷歌搜索似乎表明 DMG 文件的正確 mime 類型是application\octet-stream 如果您在開發人員工具中查看它時沒有說這種類型,那么這可能是您的問題。 如果確實如此,那么它可能是別的東西。 這是一篇關於 mime 類型的文章: https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Configuring_server_MIME_types 向下滾動到底部以獲取有關配置不同 web 服務器(Apache、IIS 等)的 mime 類型的一些注釋。

還注意到您的 URL 包含空格。 這些應該是百分比編碼的有效。

另一種可能更直接的下載方法是使用超鏈接,例如:

<a href="URL_to_your_flle.dmg">Download</a>

你可以把它設計成一個按鈕。

暫無
暫無

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

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