日期:2010-05-07  浏览次数:20575 次

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

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

1、  创建一个新Web 应用程序项目;

2、  打开Web 窗体;

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

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

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

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

7、  在窗体上添加一个Web Form Image并命名为imgPicture,设置宽度和高度分别为160和120。

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

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

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;
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;
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];
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