所以我不久前问了这个问题,它立即被关闭了,所以我会给出更多的细节,这个问题似乎是特定于dmg文件类型的,直到现在我从未遇到过这个问题。
我只想点击一个按钮,然后下载dmg,而不需要使用太多javascript或任何东西。
然而,使用我的代码,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
将按钮放入表单中,并使用带有链接的get请求:
<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类型是applicationoctet-stream
。如果你在开发人员工具中看到它时没有说这种类型,那么这很可能是你的问题。如果真的发生了,那可能是别的事情。下面是一篇关于mime类型的文章:https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Configuring_server_MIME_types.向下滚动到底部,了解有关配置mime类型的不同web服务器(Apache、IIS等(的一些注意事项。
还注意到您的URL包含空格。这些应该是有效的百分比编码。
另一种可能更直接的下载方式是使用类似的超链接
<a href="URL_to_your_flle.dmg">Download</a>
你可以把它设计成一个按钮。