Microsoft Edge忽略了内容处理响应头's FileName属性

本文关键字:属性 FileName 响应 处理 Edge Microsoft | 更新日期: 2023-09-27 18:09:15

我正在向浏览器发送一个要保存在本地的文件。这在所有浏览器中都可以正常工作,除了Microsoft Edge,它将文件名替换为guid。文件必须以特定的文件名下载,是否有解释或解决此问题的方法?我的回答"不要使用Edge"将被拒绝。

        var response = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new ByteArrayContent(CreateFile(fileContents))
        };
        response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
        response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = string.Concat(fileName, ".xlsx")
        };

Microsoft Edge忽略了内容处理响应头's FileName属性

我在Edge上遇到了同样的问题,当用户点击下载。ai文件时,它会自动打开为。pdf文件,而不是下载。ai文件。

ContentDisposition是正确的,在所有浏览器上都能很好地工作,但是Edge似乎由于某种原因忽略了这个header。

经过长时间的调查和尝试,我得出了两个解决方案:
-总是以Zip文件的形式下载你的文件(这对我来说不是一个选择,我不觉得它在移动设备上是可以接受的)
—在下载文件链接中添加download属性,并确保属性值与文件名一致。(这解决了边缘的问题,并在所有其他浏览器上运行良好)

关于属性的更多信息:https://davidwalsh.name/download-attribute