所以我前不久问了这个问题,它立即关闭,因此我将提供更多详细信息,该问题似乎是特定于dmg文件类型的,我至今从未遇到过该问题。
我只是希望能够单击一个按钮,然后下载dmg,而无需使用太多的javascript或任何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中使用的download属性来强制下载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
有人对下一步尝试有什么建议吗?
可能不是您执行下载的方法被破坏了,而是Web服务器没有为dmg文件提供正确的mime类型。该文件正在下载,并且您看到的看上去像胡言乱语可能是这种现象的迹象。浏览器不知道会发生什么。
要查看服务器发送的MIME类型,请在浏览器中打开开发人员工具,单击“网络”,然后在列表中查看要下载的文件。
只是四处搜寻似乎表明DMG文件的正确mime类型是application\octet-stream
。如果在开发人员工具中查看时没有说出这种类型,则可能是您的问题。如果这样做,则可能是其他原因。这是有关mime类型的文章:https : //developer.mozilla.org/zh-CN/docs/Web/Security/Securing_your_site/Configuring_server_MIME_types。向下滚动至底部,以获取有关在不同Web服务器(Apache,IIS等)上配置mime类型的一些说明。
另请注意,您的URL包含空格。那些应该经过百分比编码才能有效。
进行下载的另一种可能更直接的方法是使用超链接,例如:
<a href="URL_to_your_flle.dmg">Download</a>
您可以将其样式化为按钮。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句