在使用Ajax/Axios时,从FileStreamResult获取文件名可以通过以下步骤实现:
具体的步骤如下:
后端代码(C#):
public FileStreamResult GetFile()
{
// 从文件系统或数据库中获取文件流
FileStream fileStream = GetFileStream();
// 设置文件下载的Content-Disposition头
Response.Headers.Add("Content-Disposition", "attachment; filename=example.txt");
// 返回文件流
return new FileStreamResult(fileStream, "application/octet-stream");
}
前端代码(JavaScript):
axios({
method: 'get',
url: '/api/getfile',
responseType: 'blob' // 设置响应类型为blob
}).then(response => {
// 获取文件名
const contentDisposition = response.headers['content-disposition'];
const filename = contentDisposition.split(';')[1].trim().split('=')[1];
// 处理文件流或下载文件
const blob = new Blob([response.data]);
const link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = filename;
link.click();
});
在上述代码中,后端接口或方法GetFile
返回一个FileStreamResult对象,并设置了Content-Disposition头,其中的filename属性指定了文件名。前端使用Axios发送请求,并设置响应类型为"blob",接收到响应后,通过获取响应头中的Content-Disposition字段,解析出文件名。然后,可以将文件流转换为Blob对象,并通过创建一个隐藏的a标签,设置其href属性为文件流的URL,download属性为文件名,模拟点击该a标签来下载文件。
请注意,以上代码仅为示例,实际应用中需要根据具体情况进行适当的修改和调整。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云