1

我正在编辑另一个开发人员创建的网站。尝试不同的方式下载一些文件我注意到了这一点:

我拿了一个随机文件并将文件放在网站的根文件夹中

1)重命名文件“a.exe”,如果我浏览到“www.mysite.com/a.exe”开始文件下载。

2)重命名文件“a.pdf”,如果我浏览到“www.mysite.com/a.pdf”浏览器会尝试打开pdf。

3)重命名文件“a.txt”,如果我浏览到“www.mysite.com/a.txt”开始文件下载。

4)重命名文件“a.jpg”,如果我浏览到“www.mysite.com/a.jpg”浏览器会尝试显示图像。

5)重命名文件“a.apk”,如果我浏览到“www.mysite.com/a.apk”服务器响应“404 - 找不到文件或目录。”。

但为什么?文件是一样的,并且总是在同一个文件夹中,为什么突然似乎“消失”了?

之前的开发人员设计了一个服务器端的变通方法,以使下载 apk 文件成为可能。

但我不敢相信下载文件我不能简单地写

<a href="www.mysite.com/a.apk"> DOWNLOAD </ a>

因为它适用于所有文件类型,除了 apk 文件......

4

3 回答 3

6

找到了解决方案!如果我们想下载一个 apk 文件,我们必须告诉站点它应该如何运行。为此添加到 web.config:

<system.webServer>

    <staticContent>

        <mimeMap fileExtension=".apk" mimeType="application/vnd.android.package-archive" />

    </staticContent>

</system.webServer>

稍后简单地以这种方式建立一个链接:

<a href="myappPath.apk">DOWNLOAD</a>

就这样!

于 2013-07-19T14:48:51.527 回答
2

托管网站的服务器可能不知道此文件类型扩展名(MIME 类型)。每个扩展都在服务器中声明。通过这些声明,您可以允许和拒绝通过 Internet 访问文件类型。您可能必须将文件扩展名添加到服务器。

APK 的 MIME 声明是application/vnd.android.package-archive

于 2013-07-19T12:04:09.333 回答
0

Web 服务器、客户端操作系统和用户代理在确定下载资源的内容类型时进行交互。Web 服务器发送 http 标头,告诉客户端发送的内容代表什么,并可能添加标头,通过该标头指定是否将内容保存为文件,并可能建议文件名。但是,浏览器中的用户设置可能会覆盖它。浏览器和操作系统范围内的文件扩展名与内容类型和/或操作的关联也可能会干扰。文件扩展名将是 url 路径部分的结尾(这甚至适用于动态创建的资源)。

如果您不需要浏览器集成,请查看命令行工具curlwget,您可以在其中明确指定以给定文件名保存下载的数据。

例如。(linux;对于windows,用双引号替换所有单引号;显然,不受保护的资源不需要用户/密码):

wget --no-cache --no-check-certificate --no-proxy 
     --output-document='<target_file_name>'
     --auth-no-challenge --http-user='<user>' --http-password='<pw>' '<url>'
于 2013-07-19T12:08:31.657 回答