【问题标题】:MVC returning .apk file without extensionMVC 返回没有扩展名的 .apk 文件
【发布时间】:2017-04-29 00:44:41
【问题描述】:

这个让我难过。在我们的控制器中,我们有一个名为 ~/AppAndroidPackage 的路径

这个 url 将为我们获取最新版本的 APK 并在 actionresult 中返回内容,特别是 FileContentResult。

 FileContentResult res = File(file.Data, file.ContentType, file.DownloadName);

file.ContentType is "application/vnd.android.package-archive"
file.DownloadName is "App.apk"

尝试下载 chrome 时会发出警告:

"Resource interpreted as Document but transferred with MIME type application/vnd.android.package-archive"

下载的实际文件是“AppAndroidPackage”,没有扩展名。只需通过文件系统添加“.apk”即可解决问题,但显然这在手机上并不理想。

我已将 MIME 类型“.apk”添加到 IIS,但问题仍然存在。

任何帮助将不胜感激!

【问题讨论】:

  • file.DownloadName的内容是什么?
  • 对于 Web API 和文件,我认为在这种情况下与 MVC 没有太大不同(可能是错误的,这就是我不提交作为答案的原因),我一直使用 @987654324 @ 返回结果。我将其Content 设置为ByteArrayContent,然后设置Content.Headers.ContentType= new MediaTypeHeaderValue("SOME MIME")
  • file.DownloadName 是“App.apk”
  • 您是否尝试过在手机和桌面浏览器上下载?结果?
  • 在某些移动设备上,它可以正常安装,但无论移动/桌面如何,它都不会返回扩展名。在检查 chrome 中的标题时,我可以看到它没有指定下载文件名。我想知道是不是这个问题。

标签: c# asp.net-mvc


【解决方案1】:

该特定 Chrome 错误通常意味着返回了错误页面,而不是您想要的文件。例如,如果您的操作引发异常,则将返回带有 500 状态代码的响应以及 500 错误页面的 HTML 内容。显然那不是 APK,所以 Chrome 会以这种方式通知您。我会检查您的操作是否正确返回,没有错误。

【讨论】:

  • 这绝对是一个 APK,因为正如我所说,我可以将文件重命名为 .apk,它会安装得很好
猜你喜欢
  • 2014-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-24
  • 2012-12-24
  • 2019-04-15
  • 2014-12-01
  • 2017-06-27
相关资源
最近更新 更多