网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > DotNet > ASP.NET > 通过.NET上传图象  

通过.NET上传图象

2005-12-20  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏

    以前,通过ASP上传图象(图象的大小、类型都受到限制)一般都是要借助外部组件来完成,.NET的出现,使这一工作变得非常容易并且可以随便的使用Bitmap和Image类型。

网管网www_bitscn_com

    在这个指导思想下,我将按照以下步骤(在你要上传图象文件上)创建一个简单的WEB窗体,该窗体将判断上传的文件是否是JPEG文件、判断该文件是否存在(必要时你可以重命名)。 网管联盟bitsCN_com

    1、  创建一个新Web 应用程序项目; 中国网管联盟bitsCN.com

    2、  打开Web 窗体;

网管u家u.bitsCN.com

    3、  在窗体上面添加一个HTML表单,并把它转换成服务器控件。在这个例子里,该文件将命名为filUpload;(把HTML转换成服务器控件的方法是,在它的上面右击鼠标然后选择Run As Server Control)

网管下载dl.bitscn.com

    4、  切换到HTML view并添加/更改FORM标签的enctype属性为multipart/form-data。如:enctype="multipart/form-data"。

网管网www.bitscn.com

    5、  在Web窗体上添加一个BUTTON并命名为btnUpload。 网管网www_bitscn_com

    6、  向Web应用程序添加一个folder called /images。

网管下载dl.bitscn.com

    7、  在窗体上添加一个Web Form Image并命名为imgPicture,设置宽度和高度分别为160和120。 网管下载dl.bitscn.com

    8、  添加一个Label控件并命名为lblOutput。显示当在上传的过程中发生的任何错误。

网管联盟bitsCN@com

    9、  给按钮btnUpload的单击事件添加如下代码:(如果你想分析以下代码的细节,你可以把下面的代码复制粘贴到VS.NET IDE集成开发环境。)

中国网管联盟bitsCN.com

    1.     private void btnUpload_Click(object sender, System.EventArgs e)
    2.     {
    3.         // Initialize variables
    4.         string sSavePath;
    5.         string sThumbExtension;
    6.         int intThumbWidth;
    7.         int intThumbHeight;
    8.
    9.         // Set constant values
    10.      sSavePath = "images/";
    11.      sThumbExtension = "_thumb";
    12.      intThumbWidth = 160;
    13.      intThumbHeight = 120;

中国网管论坛bbs.bitsCN.com


    14.
    15.      // If file field isn’t empty
    16.      if (filUpload.PostedFile != null)
    17.      {
    18.          // Check file size (mustn’t be 0)
    19.          HttpPostedFile myFile = filUpload.PostedFile;
    20.          int nFileLen = myFile.ContentLength;
    21.          if (nFileLen == 0)
    22.          {
    23.              lblOutput.Text = "No file was uploaded.";
    24.              return; 中国网管论坛bbs.bitsCN.com
    25.          }
    26.
    27.          // Check file extension (must be JPG)
    28.          if (System.IO.Path.GetExtension(myFile.FileName).ToLower() != ".jpg")
    29.          {
    30.              lblOutput.Text = "The file must have an extension of JPG";
    31.              return;
    32.          }
    33.
    34.          // Read file into a data stream
    35.          byte[] myData = new Byte[nFileLen];
网管下载dl.bitscn.com

    36.          myFile.InputStream.Read(myData,0,nFileLen);
    37.
    38.          // Make sure a duplicate file doesn’t exist.  If it does, keep on appending an
    39.          // incremental numeric until it is unique
    40.          string sFilename = System.IO.Path.GetFileName(myFile.FileName);
    41.          int file_append = 0;
    42.          while (System.IO.File.Exists(Server.MapPath(sSavePath + sFilename)))
    43.          {
    44.              file_append++; 网管u家u.bitsCN.com
    45.              sFilename = System.IO.Path.GetFileNameWithoutExtension(myFile.FileName)
    46.                               + file_append.ToString() + ".jpg";
    47.          }
    48.
    49.          // Save the stream to disk
    50.          System.IO.FileStream newFile
    51.                  = new System.IO.FileStream(Server.MapPath(sSavePath + sFilename),
    52.                                             System.IO.FileMode.Create);
中国网管论坛bbs.bitsCN.com

    53.          newFile.Write(myData,0, myData.Length);
    54.          newFile.Close();
    55.
    56.          // Check whether the file is really a JPEG by opening it
    57.          System.Drawing.Image.GetThumbnailImageAbort myCallBack =
    58.                         new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
    59.          Bitmap myBitmap;
    60.          try
    61.          {
    62.              myBitmap = new Bitmap(Server.MapPath(sSavePath + sFilename)); 网管下载dl.bitscn.com
    63.
    64.              // If jpg file is a jpeg, create a thumbnail filename that is unique.
    65.              file_append = 0;
    66.              string sThumbFile = System.IO.Path.GetFileNameWithoutExtension(myFile.FileName)
    67.                                                       + sThumbExtension + ".jpg";
    68.              while (System.IO.File.Exists(Server.MapPath(sSavePath + sThumbFile)))

网管论坛bbs_bitsCN_com


    69.              {
    70.                  file_append++;
    71.                  sThumbFile = System.IO.Path.GetFileNameWithoutExtension(myFile.FileName) +
    72.                                 file_append.ToString() + sThumbExtension + ".jpg";
    73.              }
    74.
    75.              // Save thumbnail and output it onto the webpage
    76.              System.Drawing.Image myThumbnail

网管论坛bbs_bitsCN_com


    77.                      = myBitmap.GetThumbnailImage(intThumbWidth,
    78.                                                   intThumbHeight, myCallBack, IntPtr.Zero);
    79.              myThumbnail.Save (Server.MapPath(sSavePath + sThumbFile));
    80.              imgPicture.ImageUrl = sSavePath + sThumbFile;
    81.
    82.              // Displaying success information 网管下载dl.bitscn.com
    83.              lblOutput.Text = "File uploaded successfully!";
    84.
    85.              // Destroy objects
    86.              myThumbnail.Dispose();
    87.              myBitmap.Dispose();
    88.          }
    89.          catch (ArgumentException errArgument)
    90.          {
    91.              // The file wasn't a valid jpg file
    92.              lblOutput.Text = "The file wasn't a valid jpg file."; 网管下载dl.bitscn.com
    93.              System.IO.File.Delete(Server.MapPath(sSavePath + sFilename));
    94.          }
    95.      }
    96.  }
    97.
    98.  public bool ThumbnailCallback()
    99.  {
    100.         return false;
    } 网管u家u.bitsCN.com

    10.运行以上创建的 Web页(webpage),并分别使用JPG文件和其他类型的文件来测试错误检查(error-checking)机制。

网管网www_bitscn_com


TAGs   图象   上传   通过   file   sSavePath   添加   窗体      
 上一篇:ASP.NET与ASP编译与解释的区别   下一篇:在ASP.NET下实现数字和字符相混合的验证码
相关文章列表
通过.NET上传图象 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.ASP.NET中实时图表的实现
2.asp.net 实现购物车详细代码
3.asp.net 2.0实现语言和主题的切换
4.用asp.net实现根据IP获取当地天气预报
5.为ASP.NET封装的SQL数据库访问类
6.ASP.NET购物车代码程序
7.在asp.net中为Web用户控件添加属性
8.Web Service中保持ASP.net的状态
9.ASP.NET入门随想
10.面试ASP.NET程序员的笔试题和机试题
最新推荐文章:
1.ASP.NET定义主题和外观
2.如何让Visual Studio和web标准联姻
3.关于Asp.net中导出Excel表格的问题
4.如何封装JS和CSS文件为服务器端控件
5.ASP.NET页面打印技术的总结
6.如何处理ASP.NET 2.0配置文件
7.ASP.NET十分有用的页面间传值方法
8.ASP.NET中实现Flash与.NET的紧密集成
9.面试ASP.NET程序员的笔试题和机试题
10.ASP.NET中实时图表的实现
网管论坛交流:
·不疯魔不成活
·令你大开眼界的真正标准化机房,已整理重
·为赈灾,女孩舍身拍“裸照”
·Windows Server 2003服务器群集创建和配
·exchange2k3全套官方资料
·双儿一周岁了。。。特殊的礼物来啦。。
·存储备份技术版块守则
·无盘技术交流区守则
·DOS命令基础大全之命令详解<作者吐血
·Windows XP 操作系统默认设置需要注意的