热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用asp.netWeb表单中的流返回可下载文件

如何解决《使用asp.netWeb表单中的流返回可下载文件》经验,为你挑选了2个好方法。

在asp.net MVC中,我可以执行以下操作,这将打开一个流:

 Stream strm1 = GenerateReport(Id);

return File(strm1, 
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "Report_" + reportId.ToString() + ".xlsx");

注意我是如何传递strm1这是一个流.我可以将其命名为Report_ + ... xlsx,就像上面的例子所示.

是否有类似的方法使用c#与asp.net Web表单执行此操作.



1> Win..:

如果文件位于您的网站文件夹中,则可以使用TransmitFile或WriteFile.

string fileName = string.Format("Report_{0}.xlsx", reportId);
Response.COntentType= "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition", 
   string.Format("attachment; filename={0}", fileName));
Response.TransmitFile(fileName);
Response.End();

如果您的数据已经在内存中,则需要使用此方法将响应写入块中.

Stream stm1 = GenerateReport(Id);
Int16 bufferSize = 1024;
byte[] buffer = new byte[bufferSize + 1];

Response.COntentType= "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition", 
    string.Format("attachment; filename=\"Report_{0}.xlsx\";", reportId));
Response.BufferOutput = false;
int count = stm1.Read(buffer, 0, bufferSize);

while (count > 0)
{
    Response.OutputStream.Write(buffer, 0, count);
    count = stm1.Read(buffer, 0, bufferSize);
}



2> Zar Shardan..:

我使用此扩展将流作为可下载文件发送:

public static class ToDownloadExtention
{
   public static void ToDownload(this Stream stream, string fileName, HttpResponse response)
    {
        response.Clear();
        response.COntentType= "application/octet-stream";
        response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", fileName));
        stream.CopyTo(response.OutputStream);
        response.End();
    }
}

用法是:

var stream = new MemoryStream();

stream.ToDownload("someFileName.ext",Response);


推荐阅读
  • 官方文档: http:ibeetl.comguide#beetl多谢beetl的作者抽空指点!!!根据远程文件服务器生成模板:需要注意的是:StringTemplateResour ... [详细]
  • 最近写的一个文件存储的工具类包括文件存入与读取还有判断SD卡是否可用publicclassFileTools{**写入文件操作*publicstaticvoidwriteTxtFi ... [详细]
  • 发现了一个问题,以前写的方法(点击打开)读取Assets目录下的文本,今天弄过来发现一直找不到文件,试了N多种办法都不行,最后发编译看了一下assets目录下的TXT文本,发现tex文 ... [详细]
  • phpcms 2008 变量覆盖漏洞
    一、启动环境 1.双击运行桌面phpstudy.exe软件2.点击启动按钮,启动服务器环境 二、代码审计 1.双击启动桌面Seay源代码审计系统软件3& ... [详细]
  • 在Java里面,我们可以把一些类放到.jar文件里面,然后用ClassLoader动态加载。例如:URLClassLoaderuclURL ... [详细]
  • webpack入门指南step03
    一、webpack的使用webpack简单点来说就就是一个配置文件,所有的魔力都是在这一个文件中发生的。这个配置文件主要分为三大块entry入口文件让webpack用哪个文件作为项 ... [详细]
  • 一:redis介绍Redis和Memcached类似,也属于k-v数据存储Redis官网redis.io,当前最新稳定版4.0.1支持更多value类型,除了和string外,还支 ... [详细]
  • Qt高仿Excel表格组件支持冻结列、冻结行、内容自适应和合并单元格
    [TOC]原文链接:"Qt高仿Excel表格组件支持冻结列、冻结行、内容自适应和合并单元格"一、概述最近看到一个比较炫酷的表格效 ... [详细]
  • Nexus使用nginx代理支持HTTPS协议
    公司全部网站需要支持HTTPS协议,在阿里云负载均衡配置SSL证书后,导致Nexus的HTTPS访问出错。网站访问路径:域名解析到阿里云的负载均衡,负载均衡配置80端口强转443端 ... [详细]
  • 如何在java中使用selenium爬取图片签名
    这期内容当中小编将会给大家带来有关如何在java中使用selenium爬取图片签名,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大 ... [详细]
  • 持续更新 第一期、ARM裸机复习笔记 -----------------第一遍-------------------2018-08-05开始复习:0、对裸机的大 ... [详细]
  • 目录1CacheManager级别2Cache级别3大小衡量4配置大小示例缓存大小的限制可以设置在CacheManager上,也可以设置在单个的Cache上。我们可以 ... [详细]
  • 开发笔记:md5信息摘要算法 基于16位机器运行 ... [详细]
  • nginx常见502错误的解决方法
    Nginx502错误情况1:网站的访问量大,而php-cgi的进程数偏少。针对这种情况的502错误,只需增加php-cgi的进程数。具体就 ... [详细]
  • 虽然这个充满信心的比赛最后由于一些***的原因自己几乎没有做交的白卷,但通过再一次的学习stm32,自己还是有不少的收获。现把自己当时的笔记复制到这&# ... [详细]
author-avatar
kingwign009
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有