日期:2014-05-18  浏览次数:20592 次

求助,FileUpload控件上传的文件,有些变成只读,不能删除。
上传文件的代码如下:
  if (!Directory.Exists(filePath))
  {
  Directory.CreateDirectory(filePath);
  }
  FileUpload2.SaveAs(file);
  即,上传文件之前建一个文件夹,然后把文件保存到那个文件夹下。
  删除文件的代码如下:
  FileInfo fileInfo = new FileInfo(Server.MapPath("~/Upload") + "\\" + Session["ProjID"].ToString() + "\\" + Label2.Text);
  if (fileInfo.Exists)
  {
  fileInfo.Delete();
  }
  保存文件的路径、文件夹的路径都没有问题,上传也能成功,有时候刚刚上传完删除可以成功,但是好像过一段时间再登录这个系统,再删除就不行了。vs2010给的错误提示包括“确保文件不是只读”。我就去upload文件夹下查找文件,发现文件的确是只读的。刚上传的文件有时候不是只读的,就可以成功删除。
  困扰我很久了,我是asp.net新手,希望高手赐教啊~谢谢~

------解决方案--------------------
我也碰到了这个问题,目前我的解决方法是如果文件存在那么就重命名来解决我的需求的!然后你的这个只读属性,用去除只读属性吧!
// 先把文件的属性读取出来 
FileAttributes attrs = File.GetAttributes("c:\\a.txt"); 
 
// 下面表达式中的 1 是 FileAttributes.ReadOnly 的值 
// 此表达式是把 ReadOnly 所在的位改成 0, 
attrs = (FileAttributes)((int)attrs & ~(1)); 
 
File.SetAttributes("c:\\a.txt", attrs);