ASP.NET中通过对话框方式下载文件

ASP.NET中通过对话框方式下载文件

1 通过探出对话框提示文件下载或打开

2 通过自定义Header让特定的应用程序打开文件 

使用的方法:Response.TransmitFile() 

例程:

Response.ContentType = “image/jpeg”;
Response.AppendHeader(“Content-Disposition”,”attachment; filename=SailBig.jpg”);
Response.TransmitFile( Server.MapPath(“~/images/sailbig.jpg”) ); 

流传送所使用的方法:

Response.BinaryWrite()和Response.OutputStream()

例程: 

Bitmap bmp = wwWebUtils.CornerImage(backcolor, color, c, Radius, Height, Width);
Response.ContentType = “image/jpeg”;
Response.AppendHeader(“Content-Disposition”,”attenment; filename=LeftCorner.jpg”);
bmp.Save(Response.OutputStream, ImageFormat.Jpeg);

关于Content Type(MIME Type)的参考URL:

http://www.w3.org/TR/html4/types.html (概述) 

http://www.iana.org/assignments/media-types/ (详细列表) 

常见问题解决方案:

1、当从资源文件或者数据库BLOB字段载入图像出现错误

错误内容:A generic error occurred in GDI+

代码:

Bitmap bmp = this.GetGlobalResourceObject(“Resource”,”_BitMap”) as Bitmap;
Response.ContentType=”image/jpeg”;
bmp.Save(Response.OutputStream, ImageFormat.Jpeg); 
Response.End();

解决方法,再创建一个实例接收从资源文件或者数据库BLOB字段读入的图像内容。

解决方案代码: 

Bitmap bmp = this.GetGlobalResourceObject(“Resource”, ”_BitMap”) as Bitmap;
Bitmap temp = new Bitmap(bmp); 
Response.ContentType = “image/jpeg”;
Temp.Save(Response.OutputStream, ImageFormat.Jpeg);
bmp.Dispose();
temp.Dispose(); 
Response.End();
 
2、无法直接把PNG图像存入到输出流

原因:PNG是特殊的图片格式

解决方案代码:

Bitmap bmp = this.GetGlobalResourceObject( “Resource”, “_BitMap”) as Bitmap;
Bitmap temp = new Bitmap(bmp); 
MemoryStream ms = new MemoryStream();
Response.ContentType=”image/png”;
temp.Save(ms, System.Drawing.Imaging, ImageFormat.Png);
Ms.WriteTo(Response.OutputStream);
bmp.Dispose();
temp.Dispose();
Response.End();

3、解决缓存问题

Response.ContentType=”image/png”;
Response.Buffer = false;
Response.Clear(); 
MemoryStream stream1 = new MemoryStream();
// DrawPie method return an Image
This.DrawPie(table1).Save(stream1,ImageFormat.Png);
Response.BinaryWrite(stream1.ToArray()); 
Base.OnPreInit(e);

时间: 2024-11-01 08:51:09

ASP.NET中通过对话框方式下载文件的相关文章

在asp.net中如何上传大文件

在asp.net中如何上传大文件呢?我们需要配置Web.config文件.具体如下: 在web.config中的<system.web></system.web>内加入如下代码: <httpRuntime executi maxRequestLength="951200" useFullyQualifiedRedirectUrl="true" minFreeThreads="8" minLocalRequestFre

怎么用asp.net来上传和下载文件啊

问题描述 怎么用怎么用asp.net来上传和下载文件啊 解决方案 解决方案二:找本asp.net入门书看看.上传文件大概需要3.4行代码.而下载文件只要2.3行代码就够了.解决方案三:<form><inputtype="file"name="file"id="file"><inputtype="submit"value="submit"></form>后台用r

帮下忙啊,ajax中没法用response下载文件啊

问题描述 在用ajax的页面中添加个下载图片的按钮,在自己没有ajax项目就能用,在公司的项目上就不能用,症状是点了按钮后没反应,页面下面提示系统错误-1072896748BAIDU了一下好像说是ajax和respongse有冲突?忘各位大虾帮帮忙啊System.IO.FileStreamfs=System.IO.File.OpenRead(path);//path是图片地址byte[]FileData=newbyte[fs.Length];fs.Read(FileData,0,(int)fs.

ASP.NET中防止Access数据库下载

access|asp.net|数据|数据库|下载 如何防止Access数据库下载是一个很老的话题了,网上的讨论也比较多.在这里只是探讨ASP.NET下防止Access数据库被下载的方法,有些是对以前方法的总结,部分是自己原创.其中可能有不完善甚至不正确的地方,欢迎大家指出,一同进步. 目前的解决方案主要有以下几种: 1. 把数据库文件放置到站点目录之外 2. 设置存放数据库文件的IIS目录权限为不可读取(IIS信息服务管理->选择需要设置目录->右键->属性->目录选项卡->

关于Asp.Net中的编程实现下载

经常在论坛看见有人求Asp.Net中编程实现下载的代码,有些还希望能断点续传什么的.其实问题的关键在于权限.B/S和C/S不仅仅是外观上的区别而已. 下载,顾名思义是客户端要下,所以载.你硬塞給人家那不叫下载,那其实是"从服务器'上传'到客户端". 有些人的想法是向客户端"写一个"你打算他下载的"文件",在C/S结构中是没有问题的,因为C端来写.但是在Asp.net却是不行的,一定会弹出权限的错误,因为B/S结构中没有个C端給你,S端是不可能获得

Servlet中的上传下载文件

一.文件上传 文件的上传也是基于表单来完成的,表单中的file元素可以自动生成一个文本框和一个按钮,文本框可以输入本地文件名或路径,点击按钮则可以打开一个文件选择框让用户选中本地文件.需要注意的是在文件上传时还必须设置表单的enctype属性,并将它的值设置为multipart/form-data. upload.jsp   <FORM METHOD="POST" ENCTYPE="multipart/form-data"    ACTION="Sm

为什么在asp.net中删除新建好的文件夹,在新建文件夹图片不可以粘贴

问题描述 为什么在ASP.NET中添加文件夹存放图片,本来复制图片,粘贴可以,但是删除文件夹,在新建文件夹,复制图片,不可以粘贴 解决方案 解决方案二:不会的,你确认复制粘贴了?解决方案三:重启你的计算机.解决方案四:可以复制的啊,你是怎么复制粘贴的

asp.net BackgroundWorker之在后台下载文件_实用技巧

示例: 下面的代码示例演示如何使用 BackgroundWorker 组件从 URL 加载 XML 文件.用户单击"下载"按钮时,Click 事件处理程序将调用 BackgroundWorker 组件的 RunWorkerAsync 方法来启动下载操作.在下载过程中,将禁用该按钮,然后在下载完成后再启用该按钮.MessageBox 将显示文件的内容. 复制代码 代码如下: using System; using System.Collections.Generic; using Sys

在ASP.NET程序中实现上传下载文件

asp.net|程序|上传|下载 //检查上传文件不为空   if(File1.PostedFile!=null)   {         string nam = File1.PostedFile.FileName ;    //取得文件名(抱括路径)里最后一个"."的索引    int i= nam.LastIndexOf(".");    //取得文件扩展名    string newext =nam.Substring(i);    //这里我自动根据日期和