关于ASP.NET中fileupload控件的缺点

时间:2023-03-09 19:44:52
关于ASP.NET中fileupload控件的缺点

一、首我来理一理“FileUpload”控件的工作大概原理:

  FileUpload 控件显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上载到 Web 服务器。用户通过在控件的文本框中输入本地计算机上文件的完整路径(例如,C:\Ptest\CTest.txt)来指定要上载的文件。用户也可以通过单击“浏览”按钮,然后在“选择文件”对话框中定位文件来选择文件。用户选择要上载的文件后,FileUpload 控件不会自动将该文件保存到服务器。您必须显式提供一个控件或机制,使用户能提交指定的文件。例如,可以提供一个按钮,用户单击它即可上载文件。为保存指定文件所写的代码应调用 SaveAs()方法,该方法将文件内容保存到服务器上的指定路径。通常,在引发回发到服务器的事件的事件处理方法中调用SaveAs 方法。在文件上传的过程中,文件数据作为页面请求的一部分,上传并缓存到服务器的内存中,然后再写入服务器的物理硬盘中。

二、个人认为有一下几点,有其他见解的同仁可以提提:

1、上传很消耗内存。因为它是服务器控件,好多逻辑是在服务端进行处理的。

2、上传大文件受限制。默认情况下,不支持大于4M的文件,若硬要上传大于4M的文件,可以通过设置 httpRuntime 元素的 maxRequestLength 属性来允许上载更大的文件。若要增加整个应用程序所允许的最大文件大小,请设置 Web.config 文件中的 maxRequestLength 属性。若要增加指定页所允许的最大文件大小,请设置 Web.config 中 location 元素内的 maxRequestLength 属性。并且在上载较大文件时,用户也可能接收到以下错误信息:
    aspnet_wp.exe (PID: 1520) was recycled because memory consumption exceeded 460 MB (60 percent of available RAM).
    这个提示信息说明,上传文件的大小不能超过服务器内存大小的60%。这里的60%是Web。config文件的默认配置,是<processModel>配置节中的 memoryLimit 属性默认值。虽然可以修改,但是如果上传文件越大,成功几率越小,所以不建议使用。

3、不支持同时上传多个文件,即在ajax的UpdatePanel中是没有办法运行。