ASP.NET入门教程 8.5 上传图片[1]

ASP.NET入门教程 8.5 上传图片[1],第1张

    ASP NET 提供了一种从浏览器向服务器上传图片(或其他文件)的简单方法 虽然这个内容严格地说不属于数据库的范畴 但我们还是在这里进行介绍 工具条提供FileUpload工具 将该工具拖放到页面上时会产生一个文本框和一个浏览按钮 作为设计人员 必须为用户添加一个实际执行上传功能的按钮

    在该按钮的Click事件过程中 最简单的 *** 作如下代码所示 用户指示的文件(通过输入或浏览)将被传送到服务器

    FileUpload SaveAs(FileUpload FileName)

    但这段代码过于简单 因为上传的文件会保存到Web站点的根目录下 可 以在文件名的前面添加一个字符串 由该字符串引导上传的文件存入服务器上恰当的文件夹 注意当在浏览器中打开上传页面的时候 可以查看其源代码 但这并不会暴露服务器的路径 下面的代码将文件存放到MyImageFolder文件夹内

    FileUpload SaveAs( MyServer\MyWebsite\MyImageFolder\ &    FileUpload FileName)

    在调用FileUpload SaveAs方法的时候 ASP NET 将创建一个名为FileUpload PostedFile的对象 该对象带有多个与上传 *** 作相关尺李的属性 最常用的是FileName和ContentLength 因此如果创建了一个名为Label l的标签 那么可以在它的文本中亏扰显示正在上传的文件 如下所示

 

FileUpload SaveAs( C:\BegASPNET \WroxUnited\MatchImages\ &

   FileUpload FileName)

                Label Text= File uploaded to WroxUnited from:<br/>&_

          FileUpload PostedFile FileName

    如果用户在选择文件之前单击上传按钮该怎么办?可以通过IF THEN语句避免这个问题 如下所示(类似IF THEN的代码结构将在第 章介绍)

 

  If FileUpload HasFile Then

  FileUpload SaveAs( C:\BegASPNET \WroxUnited\MatchImages\ &

   FileUpload FileName)

         销困旦       Else

                Label Text= Please select a file before clicking the Upload button

        End If

    ASP NET 入门教程完整版  

lishixinzhi/Article/program/net/201311/14833

应用程序中经常需要允许用户把文件上传到web服务器 尽管在ASP NET X也可以完成该功能 但在ASP NET 中使用FileUpload控件会更简单 该控件让用户更容易地浏览和选择用于上传的文件 它包含一个浏览按钮和用于输入文件名的文本框 只要用户在文本框中输入了完全限定的文件名 无论是直接输入或通过浏览按钮选择 都可以调用FileUpload的SaveAs方法保存到磁盘上差歼尘 除了从WebControl类继承的标准成员 FileUpload控件还公开了几个只读的属性 在表 和表 列出 表 FileUpload控件属性 名  称 类型 读 写 说  明 FileContent Stream × 返回一个指向上传文件的流对象 FileName string × 返回要上传文件的名称 不包含路径信息 HasFile Boolean × 如虚禅果是true 则表示该控件有文件要上传 PostedFile HttpPostedFile × 返回已经上传文件的引用 表 列出了它所公开的只读属性 表 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 用<br/>HTML元素分隔这些控件 切换到设计视图 通过双击每个按钮 为它们在代码隐藏文件中创建具有默认名称的Click事件处理程序 完成后的内容文件类似于示例 示例 FileUploadDemo网站的default aspx <%@ Page Language= C# AutoEventWireup= true CodeFile= Default aspx cs Inherits= _Default %><!DOCTYPE PUBLIC //W C//DTD XHTML //EN >< xmlns= ><head runat= server > <title>FileUpload Control</title></head><body> <form id= form runat= server > <div><h >FileUpload Control</h ><asp:FileUpload ID= FileUpload runat= server /><br /><asp:Button ID= btnSave runat= server Text= Save OnClick= btnSave_Click /><asp:Button ID= btnDisplay runat= server Text= Display OnClick= btnDisplay_Click /><br /><br /><asp:Label ID= lblMessage runat= server /><asp:Label ID= lblDisplay runat= server /> </div> </form></body></>

在代码隐藏文件中 添加示例 中高亮显示的代码 非高亮显示的代码由VS 自动创建

示例 FileUploadDemo网站的Default aspx cs

using Systemusing System Datausing System Configurationusing System Webusing System Web Securityusing System Web UIusing System Web UI WebControlsusing System Web UI WebControls WebPartsusing System Web UI HtmlControlsusing 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 (FileUpload HasFile){ try {str += Uploading file: + FileUpload FileName// 保存文件FileUpload SaveAs( c:\\websites\\uploads\\ + FileUpload FileName)// 显示文件信息str += <br/>Saved As: + FileUpload PostedFile FileNamestr += <br/>File Type: + FileUpload PostedFile ContentTypestr += <br/>File Length (bytes): + FileUpload PostedFile ContentLengthstr += <br/>PostedFile File Name: + FileUpload PostedFile FileName } catch (Exception ex) {str += <br/><b>Error</b><br/>Unable to save c:\\websites\\uploads\\ + FileUpload FileName + <br/> + ex Message }}else{ str = No file uploaded }lblMessage Text = strlblDisplay Text =  } protected void btnDisplay_Click(object sender EventArgs e) {string str = <u>File: + FileUpload FileName + </u><br/> if (FileUpload HasFile){ try {Stream stream = FileUpload FileContentStreamReader reader = new StreamReader(stream)string strLine = do{ strLine = reader ReadLine( ) str += strLine} while (strLine != null) } catch (Exception ex) {str += <br/><b>Error</b><br/>Unable to display + FileUpload FileName + <br/> + ex Message }}else{ str = No file uploaded }lblDisplay Text = strlblMessage 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服务器 特别是使用VS 默认的开发模式 在该模式下使用的是内置的web服务器 并且不通过IIS访问网站而是由文件系统访问网站 这样 永远也不会有权限问题 然而 当网站部署到产品服务器上 且该网站通过IIS和虚拟目录来访问时 就会出现问题 这是因为运行ASP NET的账户必须拥有对用于保存上传文件的目录的写权限 在Windows /XP中 账户的名称是ASPNET 在Windows Server 中 写权限必须分配给IIS_WPG账户组 利用FileUpload控件并结合良好的安全防护 用户可以把自己的文件传送到网站 以丰富网站功能 lishixinzhi/Article/program/net/201311/13538

专门建立一个文件旅野夹,设置web共享,iis里可写。

一般是网目录没有写权限1、设置NetworkService有访问网站目录的权限2、设置Aspnet及Internet来宾帐号册镇正对网站上传目录的读写权限设置方法,目录或磁盘右击属性-安全。

ASP.NET的FileUpload控件可用于上传文件到服务器。HoverTreeTop新增了一州悔个“阅图”功能,图片就是用FileUpload上传的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12332023.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存