您的位置:首页 > 其它

上传下载文件

2015-09-02 10:02 344 查看
1.突破上传超过4M大小文件限制

在webconfig文件中配置如下

<configuration>

<system.web>

<httpRuntime maxRequestLength="4096" executionTimeout="120"/>

</system.web>

</configuration>

1. maxRequestLength 这个属性限制文件上传的大小代表总量(比如多文件上传),是以KB 为单位的,默认值为

4096KB,而最大上限为2097151KB,大约是2GB。

2. executionTimeout 属性则是限制文件上传的时间,以秒为单位,默认值为90 秒,如

果您考虑到所设计的Web 应用系统上传时间要超过90 秒可延长设定值。

2.文件上传的2种方式

方法1.将文件上传到服务器上添加一个上传控件和一个按钮,在单击按钮事件中写如下代码,代码如下:

Guid myGuid = Guid.NewGuid();//全局标识,一般不用加,但是为了防止发生图片重名加上更好

try

{

if (FileUpload1.PostedFile.FileName == "")

{

this.lb_info.Text = "请选择文件!";

}

else

{

string filepath = FileUpload1.PostedFile.FileName;

string filename = filepath.Substring(filepath.LastIndexOf("//") + 1);

string serverpath = Server.MapPath("upload/") + System.DateTime.Now.ToString("yyy-MM-dd-hh-mm-ss") + Session.SessionID + myGuid + filename;

//有下载需求可以把serverpath储存到数据库中,下载的时候可以读取这个字段的值

FileUpload1.PostedFile.SaveAs(serverpath);

this.lb_info.Text = "上传成功!";

}

}

catch (Exception error)

{

this.lb_info.Text = "上传发生错误!原因:" + error.ToString();

}

将文件上传到数据库中:

protected void Button1_Click(object sender, EventArgs e)

{

byte[] img=new byte[this.FileUpload1.PostedFile.ContentLength];

this.FileUpload1.PostedFile.InputStream.Read(img, 0, this.FileUpload1.PostedFile.ContentLength);

SqlConnection sqlcon = new SqlConnection("server=.;uid=sa;pwd=sa;database=DB_TWXY");

sqlcon.Open();

SqlCommand sqlcmd = new SqlCommand("insert into image (image)values('" + img + "')", sqlcon);

int i=sqlcmd.ExecuteNonQuery();

if (i == 1)

{

Page.RegisterStartupScript("message", "<script>alert('上传成功!');</script>");

}

sqlcon.Close();

}

从数据库中上传下载文件:两个界面,一个页面打开下载页面并传递相应参数过去,另一个页面是下载界面(DownLoadImage.aspx)

上传页面代码:

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

GvBind();

}

}

protected void GvBind()//GridView绑定方法

{

B_B_TK_CHPTKU bbtc = new B_B_TK_CHPTKU();

GridView1.DataSource = bbtc.GetAllList();//页面加了个GridView

GridView1.DataBind();

}

protected void Button1_Click(object sender, EventArgs e)//上传文件到数据库

{

//注意:之所以把上传代码下载了页面层,是因为数据库中存放文件的字段数据类型是image,而模型层会默认把image类型写成byte[]类型,这样经过2次转化,存到数据库中的数据不正确,下载的时候错误!所以上传方法放弃3层,直接写入数据库即可,有待于研究

byte[] img = new byte[this.FileUpload1.PostedFile.ContentLength];

if (img.Length == 0)//若不检测,则上传的文件如果没有内容,那么下载将发生“超出范围异常”错误!

{

Page.RegisterStartupScript("message", "<script>alert('对不起,请不要上传空文件!');</script>");

}

else

{

this.FileUpload1.PostedFile.InputStream.Read(img, 0, this.FileUpload1.PostedFile.ContentLength);

string filepath = FileUpload1.PostedFile.FileName;

string filename = filepath.Substring(filepath.LastIndexOf("//") + 1);

string filename1 = filename.Remove(filename.LastIndexOf("."));

string filename2 = filename.Substring(filename.LastIndexOf(".") + 1);

string connectionString = WebConfigurationManager.ConnectionStrings["CustomDataConnectionString"].ToString();

string sql = "insert into B_TK_CHPTKU (THAO,TYMCHENG,TYANG1,BZHI1)values(@THAO,@TYMCHENG,@TYANG1,@BZHI1)";

SqlConnection sqlcon = new SqlConnection(connectionString);

SqlCommand sqlcom = new SqlCommand(sql, sqlcon);

sqlcom.Parameters.AddWithValue("@THAO", filename1);

sqlcom.Parameters.AddWithValue("@TYMCHENG", filename);

sqlcom.Parameters.AddWithValue("@TYANG1", img);

sqlcom.Parameters.AddWithValue("@BZHI1", filename2);

int i = 0;

try

{

sqlcon.Open();

i = sqlcom.ExecuteNonQuery();

}

finally

{

sqlcon.Close();

}

if (i == 1)

{

lblMessage.ForeColor = System.Drawing.Color.Green;

lblMessage.Text = "文件上传成功!";

GvBind();

}

else

{

lblMessage.ForeColor = System.Drawing.Color.Red;

lblMessage.Text = "文件上传失败!";

}

}

}

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)//下载按钮事件

{

if (e.CommandName == "DownLoad")

{

int index = int.Parse(e.CommandArgument.ToString());

string THAO = GridView1.Rows[index].Cells[0].Text;

string BZHI1 = GridView1.Rows[index].Cells[1].Text;

Response.Redirect("DownLoadImage.aspx?THAO=" + THAO + "&BZHI1=" + BZHI1);

}

}

下载页面代码:

protected void Page_Load(object sender, EventArgs e)

{

string THAO = Request.QueryString["THAO"].ToString();

string BZHI1 = Request.QueryString["BZHI1"].ToString();

B_B_TK_CHPTKU bbtc = new B_B_TK_CHPTKU();

DataSet ds = bbtc.GetList("THAO='" + THAO + "' and BZHI1='" + BZHI1 + "'");

Response.Clear();

Response.ClearHeaders();

Response.ContentType = "application/octet-stream";

Response.AddHeader("Content-Disposition", "attachment; filename="

+ System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(ds.Tables[0].Rows[0]["TYMCHENG"].ToString())));

Response.BinaryWrite((byte[])ds.Tables[0].Rows[0]["TYANG1"]);

Response.End();

}

3.文件从服务器硬盘上下载代码

步骤:上传的时候将文件路径和文件名存入数据库,正真的文件存入硬盘中的一个文件件下

下载的时候读数据库文件路径和名字来调用下面的方法实现文件下载

public void downLoad(string path)

{

try

{

string filePath = path;

int temp = filePath.LastIndexOf("/") + 1;

string fileName = filePath.Substring(temp, filePath.Length - temp);

//FileStream fileStream = new FileStream(Server.MapPath(filePath), FileMode.Open, FileAccess.Read, FileShare.Read);

FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);

long fileSize = fileStream.Length;

Context.Response.ContentType = "application/octet-stream";

Context.Response.AddHeader("Content-Disposition", "attachment; filename=/"" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + "/"");

Context.Response.AddHeader("Content-Length", fileSize.ToString());

byte[] fileBuffer = new byte[fileSize];

fileStream.Read(fileBuffer, 0, (int)fileSize);

fileStream.Close();

Context.Response.BinaryWrite(fileBuffer);

Context.Response.End();

}

catch

{

Response.Write("<script>alert('查无此资料或已被删除');</script>");

}

}

4.其他方式的文件下载(有的方法没尝试过)

方法1://TransmitFile实现下载

protected void Button1_Click(object sender, EventArgs e)

{

/*

微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite

下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。

代码如下:

*/

Response.ContentType = "application/x-zip-compressed";

Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");

string filename = Server.MapPath("DownLoad/aaa.zip");

Response.TransmitFile(filename);

}

方法2://WriteFile实现下载

protected void Button2_Click(object sender, EventArgs e)

{

/*

using System.IO;

*/

string fileName ="aaa.zip";//客户端保存的文件名

string filePath=Server.MapPath("DownLoad/aaa.zip");//路径

FileInfo fileInfo = new FileInfo(filePath);

Response.Clear();

Response.ClearContent();

Response.ClearHeaders();

Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);

Response.AddHeader("Content-Length", fileInfo.Length.ToString());

Response.AddHeader("Content-Transfer-Encoding", "binary");

Response.ContentType = "application/octet-stream";

Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");

Response.WriteFile(fileInfo.FullName);

Response.Flush();

Response.End();

}

方法3://WriteFile分块下载

protected void Button3_Click(object sender, EventArgs e)

{

string fileName = "aaa.zip";//客户端保存的文件名

string filePath = Server.MapPath("DownLoad/aaa.zip");//路径

System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);

if (fileInfo.Exists == true)

{

const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力

byte[] buffer = new byte[ChunkSize];

Response.Clear();

System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);

long dataLengthToRead = iStream.Length;//获取下载的文件总大小

Response.ContentType = "application/octet-stream";

Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));

while (dataLengthToRead > 0 && Response.IsClientConnected)

{

int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小

Response.OutputStream.Write(buffer, 0, lengthRead);

Response.Flush();

dataLengthToRead = dataLengthToRead - lengthRead;

}

Response.Close();

}

}

方法4://流方式下载

protected void Button4_Click(object sender, EventArgs e)

{

string fileName = "aaa.zip";//客户端保存的文件名

string filePath = Server.MapPath("DownLoad/aaa.zip");//路径

//以字符流的形式下载文件

FileStream fs = new FileStream(filePath, FileMode.Open);

byte[] bytes = new byte[(int)fs.Length];

fs.Read(bytes, 0, bytes.Length);

fs.Close();

Response.ContentType = "application/octet-stream";

//通知浏览器下载文件而不是打开

Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));

Response.BinaryWrite(bytes);

Response.Flush();

Response.End();

}

方法5://简单方式下载

private void DownLoad(string WJMING)//下载文件

{

string name = HttpUtility.UrlEncode(System.Text.UTF8Encoding.UTF8.GetBytes(WJMING));//不加这句当文件名有中文的时候会显示乱码

Response.Clear();

Response.ClearHeaders();

Response.ContentType = "application/octet-stream";//不知道什么类型,所以就设定为原类型

Response.AddHeader("Content-Disposition", "attachment; filename=" + name);//给下载的文件名起名字

Response.WriteFile(Server.MapPath("../QTWJ/WJMING/") + WJMING);

Response.End();

}

Response.AddHeader("content-type", "application/x-msdownload;");类型列表

".*"="application/octet-stream"

".001"="application/x-001"

".301"="application/x-301"

".323"="text/h323"

".906"="application/x-906"

".907"="drawing/907"

".a11"="application/x-a11"

".acp"="audio/x-mei-aac"

".ai"="application/postscript"

".aif"="audio/aiff"

".aifc"="audio/aiff"

".aiff"="audio/aiff"

".anv"="application/x-anv"

".asa"="text/asa"

".asf"="video/x-ms-asf"

".asp"="text/asp"

".asx"="video/x-ms-asf"

".au"="audio/basic"

".avi"="video/avi"

".awf"="application/vnd.adobe.workflow"

".biz"="text/xml"

".bmp"="application/x-bmp"

".bot"="application/x-bot"

".c4t"="application/x-c4t"

".c90"="application/x-c90"

".cal"="application/x-cals"

".cat"="application/vnd.ms-pki.seccat"

".cdf"="application/x-netcdf"

".cdr"="application/x-cdr"

".cel"="application/x-cel"

".cer"="application/x-x509-ca-cert"

".cg4"="application/x-g4"

".cgm"="application/x-cgm"

".cit"="application/x-cit"

".class"="java/*"

".cml"="text/xml"

".cmp"="application/x-cmp"

".cmx"="application/x-cmx"

".cot"="application/x-cot"

".crl"="application/pkix-crl"

".crt"="application/x-x509-ca-cert"

".csi"="application/x-csi"

".css"="text/css"

".cut"="application/x-cut"

".dbf"="application/x-dbf"

".dbm"="application/x-dbm"

".dbx"="application/x-dbx"

".dcd"="text/xml"

".dcx"="application/x-dcx"

".der"="application/x-x509-ca-cert"

".dgn"="application/x-dgn"

".dib"="application/x-dib"

".dll"="application/x-msdownload"

".doc"="application/msword"

".dot"="application/msword"

".drw"="application/x-drw"

".dtd"="text/xml"

".dwf"="Model/vnd.dwf"

".dwf"="application/x-dwf"

".dwg"="application/x-dwg"

".dxb"="application/x-dxb"

".dxf"="application/x-dxf"

".edn"="application/vnd.adobe.edn"

".emf"="application/x-emf"

".eml"="message/rfc822"

".ent"="text/xml"

".epi"="application/x-epi"

".eps"="application/x-ps"

".eps"="application/postscript"

".etd"="application/x-ebx"

".exe"="application/x-msdownload"

".fax"="image/fax"

".fdf"="application/vnd.fdf"

".fif"="application/fractals"

".fo"="text/xml"

".frm"="application/x-frm"

".g4"="application/x-g4"

".gbr"="application/x-gbr"

".gcd"="application/x-gcd"

".gif"="image/gif"

".gl2"="application/x-gl2"

".gp4"="application/x-gp4"

".hgl"="application/x-hgl"

".hmr"="application/x-hmr"

".hpg"="application/x-hpgl"

".hpl"="application/x-hpl"

".hqx"="application/mac-binhex40"

".hrf"="application/x-hrf"

".hta"="application/hta"

".htc"="text/x-component"

".htm"="text/html"

".html"="text/html"

".htt"="text/webviewhtml"

".htx"="text/html"

".icb"="application/x-icb"

".ico"="image/x-icon"

".ico"="application/x-ico"

".iff"="application/x-iff"

".ig4"="application/x-g4"

".igs"="application/x-igs"

".iii"="application/x-iphone"

".img"="application/x-img"

".ins"="application/x-internet-signup"

".isp"="application/x-internet-signup"

".IVF"="video/x-ivf"

".java"="java/*"

".jfif"="image/jpeg"

".jpe"="image/jpeg"

".jpe"="application/x-jpe"

".jpeg"="image/jpeg"

".jpg"="image/jpeg"

".jpg"="application/x-jpg"

".js"="application/x-javascript"

".jsp"="text/html"

".la1"="audio/x-liquid-file"

".lar"="application/x-laplayer-reg"

".latex"="application/x-latex"

".lavs"="audio/x-liquid-secure"

".lbm"="application/x-lbm"

".lmsff"="audio/x-la-lms"

".ls"="application/x-javascript"

".ltr"="application/x-ltr"

".m1v"="video/x-mpeg"

".m2v"="video/x-mpeg"

".m3u"="audio/mpegurl"

".m4e"="video/mpeg4"

".mac"="application/x-mac"

".man"="application/x-troff-man"

".math"="text/xml"

".mdb"="application/msaccess"

".mdb"="application/x-mdb"

".mfp"="application/x-shockwave-flash"

".mht"="message/rfc822"

".mhtml"="message/rfc822"

".mi"="application/x-mi"

".mid"="audio/mid"

".midi"="audio/mid"

".mil"="application/x-mil"

".mml"="text/xml"

".mnd"="audio/x-musicnet-download"

".mns"="audio/x-musicnet-stream"

".mocha"="application/x-javascript"

".movie"="video/x-sgi-movie"

".mp1"="audio/mp1"

".mp2"="audio/mp2"

".mp2v"="video/mpeg"

".mp3"="audio/mp3"

".mp4"="video/mpeg4"

".mpa"="video/x-mpg"

".mpd"="application/vnd.ms-project"

".mpe"="video/x-mpeg"

".mpeg"="video/mpg"

".mpg"="video/mpg"

".mpga"="audio/rn-mpeg"

".mpp"="application/vnd.ms-project"

".mps"="video/x-mpeg"

".mpt"="application/vnd.ms-project"

".mpv"="video/mpg"

".mpv2"="video/mpeg"

".mpw"="application/vnd.ms-project"

".mpx"="application/vnd.ms-project"

".mtx"="text/xml"

".mxp"="application/x-mmxp"

".net"="image/pnetvue"

".nrf"="application/x-nrf"

".nws"="message/rfc822"

".odc"="text/x-ms-odc"

".out"="application/x-out"

".p10"="application/pkcs10"

".p12"="application/x-pkcs12"

".p7b"="application/x-pkcs7-certificates"

".p7c"="application/pkcs7-mime"

".p7m"="application/pkcs7-mime"

".p7r"="application/x-pkcs7-certreqresp"

".p7s"="application/pkcs7-signature"

".pc5"="application/x-pc5"

".pci"="application/x-pci"

".pcl"="application/x-pcl"

".pcx"="application/x-pcx"

".pdf"="application/pdf"

".pdf"="application/pdf"

".pdx"="application/vnd.adobe.pdx"

".pfx"="application/x-pkcs12"

".pgl"="application/x-pgl"

".pic"="application/x-pic"

".pko"="application/vnd.ms-pki.pko"

".pl"="application/x-perl"

".plg"="text/html"

".pls"="audio/scpls"

".plt"="application/x-plt"

".png"="image/png"

".png"="application/x-png"

".pot"="application/vnd.ms-powerpoint"

".ppa"="application/vnd.ms-powerpoint"

".ppm"="application/x-ppm"

".pps"="application/vnd.ms-powerpoint"

".ppt"="application/vnd.ms-powerpoint"

".ppt"="application/x-ppt"

".pr"="application/x-pr"

".prf"="application/pics-rules"

".prn"="application/x-prn"

".prt"="application/x-prt"

".ps"="application/x-ps"

".ps"="application/postscript"

".ptn"="application/x-ptn"

".pwz"="application/vnd.ms-powerpoint"

".r3t"="text/vnd.rn-realtext3d"

".ra"="audio/vnd.rn-realaudio"

".ram"="audio/x-pn-realaudio"

".ras"="application/x-ras"

".rat"="application/rat-file"

".rdf"="text/xml"

".rec"="application/vnd.rn-recording"

".red"="application/x-red"

".rgb"="application/x-rgb"

".rjs"="application/vnd.rn-realsystem-rjs"

".rjt"="application/vnd.rn-realsystem-rjt"

".rlc"="application/x-rlc"

".rle"="application/x-rle"

".rm"="application/vnd.rn-realmedia"

".rmf"="application/vnd.adobe.rmf"

".rmi"="audio/mid"

".rmj"="application/vnd.rn-realsystem-rmj"

".rmm"="audio/x-pn-realaudio"

".rmp"="application/vnd.rn-rn_music_package"

".rms"="application/vnd.rn-realmedia-secure"

".rmvb"="application/vnd.rn-realmedia-vbr"

".rmx"="application/vnd.rn-realsystem-rmx"

".rnx"="application/vnd.rn-realplayer"

".rp"="image/vnd.rn-realpix"

".rpm"="audio/x-pn-realaudio-plugin"

".rsml"="application/vnd.rn-rsml"

".rt"="text/vnd.rn-realtext"

".rtf"="application/msword"

".rtf"="application/x-rtf"

".rv"="video/vnd.rn-realvideo"

".sam"="application/x-sam"

".sat"="application/x-sat"

".sdp"="application/sdp"

".sdw"="application/x-sdw"

".sit"="application/x-stuffit"

".slb"="application/x-slb"

".sld"="application/x-sld"

".slk"="drawing/x-slk"

".smi"="application/smil"

".smil"="application/smil"

".smk"="application/x-smk"

".snd"="audio/basic"

".sol"="text/plain"

".sor"="text/plain"

".spc"="application/x-pkcs7-certificates"

".spl"="application/futuresplash"

".spp"="text/xml"

".ssm"="application/streamingmedia"

".sst"="application/vnd.ms-pki.certstore"

".stl"="application/vnd.ms-pki.stl"

".stm"="text/html"

".sty"="application/x-sty"

".svg"="text/xml"

".swf"="application/x-shockwave-flash"

".tdf"="application/x-tdf"

".tg4"="application/x-tg4"

".tga"="application/x-tga"

".tif"="image/tiff"

".tif"="application/x-tif"

".tiff"="image/tiff"

".tld"="text/xml"

".top"="drawing/x-top"

".torrent"="application/x-bittorrent"

".tsd"="text/xml"

".txt"="text/plain"

".uin"="application/x-icq"

".uls"="text/iuls"

".vcf"="text/x-vcard"

".vda"="application/x-vda"

".vdx"="application/vnd.visio"

".vml"="text/xml"

".vpg"="application/x-vpeg005"

".vsd"="application/vnd.visio"

".vsd"="application/x-vsd"

".vss"="application/vnd.visio"

".vst"="application/vnd.visio"

".vst"="application/x-vst"

".vsw"="application/vnd.visio"

".vsx"="application/vnd.visio"

".vtx"="application/vnd.visio"

".vxml"="text/xml"

".wav"="audio/wav"

".wax"="audio/x-ms-wax"

".wb1"="application/x-wb1"

".wb2"="application/x-wb2"

".wb3"="application/x-wb3"

".wbmp"="image/vnd.wap.wbmp"

".wiz"="application/msword"

".wk3"="application/x-wk3"

".wk4"="application/x-wk4"

".wkq"="application/x-wkq"

".wks"="application/x-wks"

".wm"="video/x-ms-wm"

".wma"="audio/x-ms-wma"

".wmd"="application/x-ms-wmd"

".wmf"="application/x-wmf"

".wml"="text/vnd.wap.wml"

".wmv"="video/x-ms-wmv"

".wmx"="video/x-ms-wmx"

".wmz"="application/x-ms-wmz"

".wp6"="application/x-wp6"

".wpd"="application/x-wpd"

".wpg"="application/x-wpg"

".wpl"="application/vnd.ms-wpl"

".wq1"="application/x-wq1"

".wr1"="application/x-wr1"

".wri"="application/x-wri"

".wrk"="application/x-wrk"

".ws"="application/x-ws"

".ws2"="application/x-ws"

".wsc"="text/scriptlet"

".wsdl"="text/xml"

".wvx"="video/x-ms-wvx"

".xdp"="application/vnd.adobe.xdp"

".xdr"="text/xml"

".xfd"="application/vnd.adobe.xfd"

".xfdf"="application/vnd.adobe.xfdf"

".xhtml"="text/html"

".xls"="application/vnd.ms-excel"

".xls"="application/x-xls"

".xlw"="application/x-xlw"

".xml"="text/xml"

".xpl"="audio/scpls"

".xq"="text/xml"

".xql"="text/xml"

".xquery"="text/xml"

".xsd"="text/xml"

".xsl"="text/xml"

".xslt"="text/xml"

".xwd"="application/x-xwd"

".x_b"="application/x-x_b"

".x_t"="application/x-x_t"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: