鲲鹏

C# asp.net

导航

用C#实现图片上传并保存相对路径

Posted on 2009-11-05 17:10  昆鹏  阅读(2459)  评论(0编辑  收藏  举报

首先在WebConfig文件中建立:

<configuration>
 <appSettings>
  <add key="imgPath" value="Images\"></add>
 </appSettings>

它是保存图片的文件夹。

实现方法是:

/// <summary>
  /// 客户端上传图片发至服务器指定文件夹
  /// 并获得保存至服务器数据库的相对路径
  /// </summary>
  /// <param name="file">客户端HtmlInputFile控件的对象</param>
  /// <returns>如果成功返回相对路径字符串否则为错误提示字符串</returns>
  public string updateImage(System.Web.UI.HtmlControls.HtmlInputFile file)//,string path
  {
   string [] imgType = new string[] { "image/gif", "image/jpg", "image/png", "image/bmp" };
   
   int i = 0;
   bool blean = false;
   string message = string.Empty;
    
   //判断是否为Image类型文件
   while(i<imgType.Length)
   {
    if(file.PostedFile.ContentType.Equals(imgType[i].ToString()))
    {
     blean = true;
     break;
    }
    else if(i == (imgType.Length - 1))
    {
     break;
    }
    else
    {
     i++;
    }
   }
    
   //对获得的路径进行分析处理 
   switch(blean)
   {
    case true:
     //服务器路径
     string serverpath = System.Web.HttpContext.Current.Server.MapPath(".")+"//";
     //上传和返回(保存到数据库中)的路径
     string uppath = string.Empty,savepath = string.Empty;
     //创建图片新的名称
     string nameImg = DateTime.Now.ToString("yyyyMMddHHmmss");
     //获得上传图片的路径
     string strPath = file.Value;
     //获得上传图片的类型(后缀名)
     string type = strPath.Substring(strPath.LastIndexOf(".")+1).ToLower();
     //拼写数据库保存的相对路径字符串
     savepath = "..\\" + System.Configuration.ConfigurationSettings.AppSettings["imgPath"].ToString();
     savepath += nameImg + "."+ type;
     //拼写上传图片的路径
     uppath = System.Web.HttpContext.Current.Server.MapPath("~/");
     uppath += System.Configuration.ConfigurationSettings.AppSettings["imgPath"].ToString();
     uppath += nameImg + "." + type;
     //上传图片
     file.PostedFile.SaveAs(uppath);
     message = savepath;
     break;
    case false:
     message = "您上传的为非图片请重新选择!";
     break;
    default:break;
   }
   return message;
  }

然后调用此方法就可以了。很简单的!