几个方法:
修改文件上传大小的限制以文件形式保存到服务器转换成二进制字节流保存到数据库将二进制通过循环的方式写入磁盘一、修改文件上传大小的限制
通过对web.config和machine.config文件进行修改.
对网站根目录下的web.config进行修改:
原:
<httpRuntime executionTimeout="90" maxRequestLength="800000" useFullyQualifiedRedirectUrl="false"/>对executionTimeout进行修改,可以修改超时时间.对maxRequestLength进行修改,可以修改上传文件的上限.
对机器上Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config进行修改:
原:
<httpRuntime executionTimeout="90" maxRequestLength="4096" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" enableVersionHeader="true" />对executionTimeout进行修改,可以修改超时时间.对maxRequestLength进行修改,可以修改上传文件的上限.
还可以(没测试过,不知道是否有用):
在“服务”里关闭 iis admin service 服务。 找到 C:\WINDOWS\system32\inetsrv下的 metabase.xml 文件。 找到 ASPMaxRequestEntityAllowed 把它修改为需要的值(可修改为20M即:20480000) 存盘,然后重启 iis admin service 服务。
前提方法:
private string GetFilePath() { string Folder = Server.MapPath("temp"); string file = FileUpload1.FileName; string RealFile = Folder + "\\" + file; return RealFile; }二、以文件形式保存到服务器
protected void Upload_Click(object sender, EventArgs e) { string filename = FileUpload1.FileName; FileUpload1.SaveAs(Server.MapPath("source/") + filename); } protected void Button4_Click(object sender, EventArgs e) { HttpPostedFile posted = FileUpload1.PostedFile; string RealFile = GetFilePath(); posted.SaveAs(RealFile); } protected void Button1_Click(object sender, EventArgs e) { string filepath = GetFilePath(); byte[] b = FileUpload1.FileBytes; FileStream fs = new FileStream(filepath, FileMode.Create); fs.Write(b, 0, b.Length); fs.Close(); }三、转换成二进制字节流保存到数据库
protected void Button3_Click(object sender, EventArgs e) { HttpPostedFile posted = FileUpload1.PostedFile; byte[] b = new byte[posted.ContentLength]; posted.InputStream.Read(b, 0, b.Length); /* * 将数据写入数据库 */ }
四、将二进制以循环的方式写入磁盘
protected void Button3_Click(object sender, EventArgs e) { string filepath = GetFilePath(); FileStream stream = new FileStream(filepath, FileMode.Create); int length = 20480; byte[] b = new byte[length]; try { int size = FileUpload1.PostedFile.InputStream.Read(b, 0, length); while (size > 0) { stream.Write(b, 0, size); size = FileUpload1.PostedFile.InputStream.Read(b, 0, length); } } catch (Exception ex) { Response.Write(ex.Message + "<br/>"); Response.Write(ex.InnerException.Message); } finally { if (stream != null) { stream.Flush(); stream.Close(); } } }
附:
在IIS中调大一些脚本超时时间,操作方法是: 在IIS的“站点或虚拟目录”的“主目录”下点击“配置”按钮,设置脚本超时时间为:300秒 (注意:不是Session超时时间)解决SERVER 2003无法下载超过4M的附件问题在“服务”里关闭 iis admin service 服务。找到 windows\system32\inetsrv\ 下的 metabase.xml 文件。找到 AspBufferingLimit 把它修改为需要的值(可修改为20M即:20480000)存盘,然后重启 iis admin service 服务。转载于:https://www.cnblogs.com/oneword/archive/2009/07/02/1566968.html