日期:2014-05-17  浏览次数:20414 次

FileUpload.PostedFile.SaveAs()
我在一个页面中显示服务器端"~/my/image"下的所有图片,用户可以通过FileUpload控件FileUpload1上传本地图片,实现代码如下:
 protected void ButtonAdd_Click(object sender, EventArgs e)
  {
  string filename = Path.GetFileName(FileUpload1.FileName);
  string extend = Path.GetExtension(filename);
   
  string path = "~/manager/image/";
  if (extend == ".gif" || extend == ".bmp" || extend == ".JPG" || extend == ".jpg" || extend == ".jpeg" || extend == ".JPEG")
  {
  FileUpload1.PostedFile.SaveAs(path+filename);
  label1.Visible = true;
  }

  }.
运行时出现如下错误信息:
异常详细信息: System.Web.HttpException: SaveAs 方法被配置为需要根路径,但是路径“~/manager/image/0951291Ia.jpg”不是根路径。
我在网上看到的上传图片的用法都是如此,不知道哪里出错了,还请大家指点一下.


------解决方案--------------------
C# code

FileUpload1.PostedFile.SaveAs(Server.MapPath(path)+"\"+filename)

------解决方案--------------------
string path = "~/manager/image/"
path有问题啊
这样的目录服务器是不认识的,你要先用Server.MapPath获得服务器的路进
string path = Server.MapPath("~/manager/image/"); 估计可以
------解决方案--------------------
string test = Server.MapPath("LinkImage/" + DateTime.Now.ToString("yyyy-MM-dd")); //用来生成文件夹
if (!Directory.Exists(test))
{
Directory.CreateDirectory(test);
}
string UpId=Request.QueryString["UpId"];//传递修改ID
if (FuImage.PostedFile.FileName != "")
{
string imgname = FuImage.PostedFile.FileName;//取得全名
string imgType = imgname.Substring(imgname.LastIndexOf(".") + 1).ToLower();//得到扩展名并转换为小写
string itemNo = getImageItemNo();//得到自动编号
string quanname = itemNo + imgname.LastIndexOf("\\") + "." + imgType;
if ("gif" != imgType && "jpg" != imgType)
{
MessageBox("a00004", null);
return;
}
#region //判断数据库是否存在图片数据。修改重现上传时删除前次上传的。
if (UpId!=null)
{
sqls.Fill_DT("select urlImage from dbo.bbs_spacelinks where linkid="+UpId+" ", dtUrlImage);
string strDel = Server.MapPath(dtUrlImage.Rows[0]["urlImage"].ToString());
if (dtUrlImage.Rows[0]["urlImage"].ToString() != null)
{
FileInfo fileDel = new FileInfo(strDel);
if (fileDel.Exists)
{
fileDel.Delete();
}
}
string imgurl = "LinkImage/" + DateTime.Now.ToString("yyyy-MM-dd") + "/" + quanname;//保存数据的时候保存imgurl 这个就可以
FuImage.PostedFile.SaveAs(Server.MapPath(imgurl));
this.HFImageUrl.Value = imgurl;//赋给隐藏域值
this.imageUrl.Value = imgurl;//赋给文本框的值
sqls.ConClose();