我现在想把上传文件的内容全部封装在类库里面,以后就直接调用;
可是有几个问题需要解决;
一、我传递进去的是上传文件的路径和保存文件的服务器路径,需要在类库的函数中处理这个制定的文件,知道它的大小,以及保存上传HttpPostedFile myFile = UpFile.PostedFile;//UpFile为上传控件
filesize = (myFile.ContentLength / 1024).ToString() + "K";
savepath = System.Configuration.ConfigurationSettings.AppSettings["MsgFile"].ToString() + AnnexName + filetype;
myFile.SaveAs(Server.MapPath(savepath));在类库里面好像无法使用这些类的,HttpPostedFile ,Server.MapPath,怎么处理阿?知道路径以后怎么样对这个文件进行操作我也不太清楚;二、2.0里面的上传控件在超过上传文件大小后,就会出现“无法显示网页”;有什么办法可以让我可以使用程序跳出错误提示阿?
我在msdn查了一下,他说是为了安全考虑,防止进行攻击所以才会这样;那正常的开发应该怎么来实现呢?

解决方案 »

  1.   

    第一个问题解决了;在类库里面不能对以上类进行使用主要是两点:
    1、类库没有在项目中对System.Web的引用;
    2、class要继承System.Web.UI.Page后才能够对Server.MapPath进行使用;
      

  2.   

    System Imaging 类中的 image 类可以对图片进行处理.例如生成缩略图等
      

  3.   

    第二个问题已经解决;
    web.config里面加了就行
    <httpRuntime
    maxRequestLength="2097151"
    executionTimeout="900"/>
      

  4.   

    学了十几天.net,来看看,好不容易碰上个会的问题,兴奋啊,可惜已经被回答完了-_-!
    一次Request请求的默认长度是4M,所以当文件超过这个大小时就会出错,maxRequestLength表示的就是这个大小,只把它改大不是办法,最好进行文件大小的检查,这是必须的,没见过什么上传文件大小不限的网站吧?呵呵
      

  5.   

    我有个上传文件的源代码,跟你要的差不多,要的话跟我发邮件[email protected]!
      

  6.   

    最后,需要注意的是:在保存文件时,您应该确保指定文件的完整路径(例如,"C:\MyFiles\Picture.jpg"),并确保为 ASP.NET 使用的帐户提供要存储文件的目录的写权限。上载大文件时,可使用 元素的 maxRequestLength 属性来增加文件大小的最大允许值,例如: <configuration>
       <system.web>
        <httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
       </system.web>
    </configuration>
    其中:maxRequestLength:指示 ASP.NET 支持的HTTP方式上载的最大字节数。该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以 KB 为单位。默认值为 4096 KB (4 MB)。executionTimeout:指示在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。在当文件超出指定的大小时,如果浏览器中会产生 DNS 错误或者出现服务不可得到的情况,也请修改以上的配置,把配置数加大。另外,上载大文件时,还可能会收到以下错误信息: aspnet_wp.exe (PID: 1520) 被回收,因为内存消耗超过了 460 MB(可用 RAM 的百分之 60)。
    如果遇到此错误信息,请增加应用程序的 Web.config 文件的 元素中 memoryLimit 属性的值。例如: <configuration>
       <system.web>
          <processModel memoryLimit="80"/>
       </system.web>
    </configuration>
    我在自己的机器上测试,可以上传50M以上的文件。以上代码在Windows XP + .NET 1.0 + VS.NET2002下测试通过。
      

  7.   

    以上是孟子网站里面的文章写的,对于第一个问题,我见过有人将其做成了用户控件,然后在前台建立一个fso的activxobject后,利用fso来操作得到是否存在文件,以及文件大小等信息。