提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|其它|编辑:郝浩|2010-06-03 11:38:59.000|阅读 1314 次
概述:应用程序中经常需要允许用户把文件上传到web服务器。尽管在ASP.NET 1.X也可以完成该功能,但在ASP.NET 2.0中使用FileUpload控件会更简单。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
应用程序中经常需要允许用户把文件上传到web服务器。尽管在ASP.NET 1.X也可以完成该功能,但在ASP.NET 2.0中使用FileUpload控件会更简单。
该控件让用户更容易地浏览和选择用于上传的文件,它包含一个浏览按钮和用于输入文件名的文本框。只要用户在文本框中输入了完全限定的文件名,无论是直接输入或通过浏览按钮选择,都可以调用FileUpload的SaveAs方法保存到磁盘上。
除了从WebControl类继承的标准成员,FileUpload控件还公开了几个只读的属性,在表5-8和表5-9列出。
表5-8 FileUpload控件属性
名 称 类型 读 写 说 明
FileContent Stream × 返回一个指向上传文件的流对象
FileName string × 返回要上传文件的名称,不包含路径信息
HasFile Boolean × 如果是true,则表示该控件有文件要上传
PostedFile HttpPostedFile × 返回已经上传文件的引用。表5-9列出了它所公开的只读属性
表5-9 HttpPostedFile属性
名 称 类 型 读 写 说 明
ContentLength integer × 返回上传文件的按字节表示的文件大小
ContentType string × 返回上传文件的MIME内容类型
FileName string × 返回文件在客户端的完全限定名
InputStream Stream × 返回一个指向上传文件的流对象
所有这些属性将在下面的示例中说明。
为了查看FileUpload控件在实际中的运用,创建一个FileUploadDemo网站。在页面上添加一个FileUpload控件,然后,添加两个ASP.NET按钮,Text属性分别设置为Save和Display,ID分别设置为btnSave和btnDisplay。增加两个Label控件,并分别将ID设置为lblMesage和lblDisplay。用
HTML元素分隔这些控件。切换到设计视图,通过双击每个按钮,为它们在代码隐藏文件中创建具有默认名称的Click事件处理程序。完成后的内容文件类似于示例5-11。
示例5-11:FileUploadDemo网站的default.aspx
FileUpload Control
在代码隐藏文件中,添加示例5-12中高亮显示的代码,非高亮显示的代码由VS2005自动创建。
示例5-12:FileUploadDemo网站的Default.aspx.cs
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.IO; // 使用Stream必需 public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) {} protected void btnSave_Click(object sender, EventArgs e) { string str = “”; if (FileUpload1.HasFile) { try { str += “Uploading file: “ + FileUpload1.FileName; // 保存文件 FileUpload1.SaveAs(“c:websitesuploads” + FileUpload1.FileName); // 显示文件信息 str += “ Saved As: “ + FileUpload1.PostedFile.FileName; str += “ File Type: “ + FileUpload1.PostedFile.ContentType; str += “ File Length (bytes): “ + FileUpload1.PostedFile.ContentLength; str += “ PostedFile File Name: “ + FileUpload1.PostedFile.FileName; } catch (Exception ex) { str += “ Error Unable to save c:websitesuploads” + FileUpload1.FileName +“ ” + ex.Message; } } else { str = “No file uploaded.”; } lblMessage.Text = str; lblDisplay.Text = “”; } protected void btnDisplay_Click(object sender, EventArgs e) { string str = “File: “ + FileUpload1.FileName + “ ”; if (FileUpload1.HasFile) { try { Stream stream = FileUpload1.FileContent; StreamReader reader = new StreamReader(stream); string strLine = “”; do { strLine = reader.ReadLine( ); str += strLine; } while (strLine != null); } catch (Exception ex) { str += “ Error Unable to display “ + FileUpload1.FileName + “ ” + ex.Message; } } else { str = “No file uploaded.”; } lblDisplay.Text = str; lblMessage.Text = “”; } } |
高亮显示的using声明对于不使用完全限定命名空间,而使用Stream对象是必须的。
在Save按钮的btnSave_Click事件处理程序中,FileUpload控件的HasFile属性用于检测文本框中是否输入了有效的完全限定文件名。如果文本框为空或输入的名称无效,将不会通过检测,并且lblMessage将显示“No file upladed”。
假定上传了一个有效文件,那么将执行try代码块中的代码。关键语句是调用File- Upload控件的SaveAs方法。该方法使用硬编码路径和FileName属性传递一个完全限定的文件名。该语句可能会由于各种原因而失败,包括磁盘空间不足、无效的路径或安全问题(稍后会有更详细的说明)。
如果SaveAs方法失败,则执行catch代码块。在lblMessage中显示一个错误信息,包括该异常的Message属性ex.Message。
如果SaveAs方法执行成功,关于上传文件的多个信息将显示在lblMessage中,这些信息通过FileUpload.PostedFile(类型为HttpPostedFile)中的属性获取。
Display按钮的Click事件处理程序与前面的类似,只不过它不是显示文件信息,而是显示文件内容。它通过使用FileContent属性获取表现为Stream对象的上传文件的内容,然后这个Stream对象被用于实例化一个StreamReader对象。StreamReader的Read- Line方法逐行的遍历文件,然后把合并后的字符串显示在lblDisplay中。
当在讨论从客户端上传文件到web服务器时,安全是非常让人关注的。须注意两点,首先,使用这种方式会公开web服务器,从而会有非常大的安全漏洞,为此要特别细心。因为这样不仅可以上传病毒,木马和其他恶意软件,还会存在客户端浏览web服务器目
录结构的危险。因此,应该使用硬编码目标目录,至少严格限定在哪里保存上传的文件。
另外,要注意的一点是,允许在磁盘写文件所必需的权限。在开发web应用程序时,一般情况下,开发机器同时也是web服务器,特别是使用VS2005默认的开发模式。在该模式下使用的是内置的web服务器,并且不通过IIS访问网站而是由文件系统访问网站。这样,永远也不会有权限问题。
然而,当网站部署到产品服务器上,且该网站通过IIS和虚拟目录来访问时,就会出现问题。这是因为运行ASP.NET的账户必须拥有对用于保存上传文件的目录的写权限。在Windows2000/XP中,账户的名称是ASPNET。在Windows Server2003中,写权限必须分配给IIS_WPG账户组。
利用FileUpload控件并结合良好的安全防护,用户可以把自己的文件传送到网站,以丰富网站功能。
默认情况下,FileUpload控件上传大小为4096kb,这是用Web.config文件的配置节中的maxRequestLength属性来设置,如果需要上传大于4096kb的文件,则需要修改这这一配置.
文件上传大小不能超过内存大小的60%.这里的60%也是web.config文件的默认配置,配置中的memoryLimit属性的默认值.虽然可以修改,但是这给服务器带来的负担可想而知.建议不要修改此值.
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:网络转载面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢