快速业务通道

ASP.NET 2.0数据教程之五十七:编辑和删除现有的二进制数据

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
头部分添加如下的代码,这很重要,因为我们不希望将一个不符合条件的上传文 件存储在文件系统。

// Reference the PictureUpload FileUpload
FileUpload PictureUpload =
  (FileUpload) Categories.Rows[e.RowIndex].FindControl("PictureUpload");
if (PictureUpload.HasFile)
{
  // Make sure the picture upload is valid
  if (ValidPictureUpload(PictureUpload))
   {
    e.NewValues["picture"] = PictureUpload.FileBytes;
  }
  else
  {
     // Invalid file upload, cancel update and exit event handler
    e.Cancel = true;
    return;
  }
}

ValidPictureUpload(FileUpload)方法只有一个FileUpload控件 类型的输入参数,通过检查上传文件的扩展符以确保上传的文件为JPG格式。只有 当上传了文件时才会调用该方法;如果没有文件上传,参数picture就只能使用其 默认值—null。如果上传了图片,且ValidPictureUpload方法返回值true, 将用图片的二进制数据对参数picture赋值。如果ValidPictureUpload方法返回值 false,则取消更新,并退出事件处理器。

ValidPictureUpload (FileUpload)方法的代码如下:

private bool ValidPictureUpload(FileUpload PictureUpload)
{
  // Make sure that a JPG has been uploaded
  if (string.Compare (System.IO.Path.GetExtension(PictureUpload.FileName),
       ".jpg", true) != 0 &&
    string.Compare (System.IO.Path.GetExtension(PictureUpload.FileName),
       ".jpeg", true) != 0)
  {
     UploadWarning.Text =
      "Only JPG documents may be used for a category''s picture.";
     UploadWarning.Visible = true;
    return false;
  }
  else
  {
    return true;
  }
}

第8步:将原始几个类的图片替换为JPG格式

回想起最开始 的那8个类的图片为位图文件其包含一个OLE报头。现在我们添加了新功能以编辑 现有记录的图片,花几分钟将这些位图文件替换为JPG文件。如果你想使当前类的 图片不变,你可以通过下面的布置将其转换为JPG格式:

1.将这些位图保 存在硬盘。在浏览器里访问UpdatingAndDeleting.aspx页面,对这8个类的图片, 点右键,选则保存图片。

2.在一个图片编辑器(比如Microsoft Paint) 软件里打开图片。

3.将图片保存为JPG格式

4.在编辑界面里,用 JPG图片更新类的picture

完成更新并上传JPG图片之后,图片不会呈现在 浏览器里,原因是DisplayCategoryPicture.aspx将尝试对最开始8个类的图片剥 离OLE报头。怎样修正呢?我们将剥离OLE报头的代码移除。这样, DisplayCategoryPicture.aspx页面的Page_Load事件处理器的代码如下:

protected void Page_Load(object sender, EventArgs e)
{
  int categoryID = Convert.ToInt32(Request.QueryString ["CategoryID"]);

  // Get information about the specified category
  CategoriesBLL categoryAPI = new CategoriesBLL();
  Northwind.CategoriesDataTable categories = _
    categoryAPI.GetCategoryWithBinaryDataByCategoryID (categoryID);
  Northwind.CategoriesRow category = categories [0];

  // For new categories, images are JPGs...

  // Output HTTP headers providing information about the binary data
  Response.ContentType = "image/jpeg";

  // Output the binary data
  Response.BinaryWrite (category.Picture);
}

注意:

UpdatingAn

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号