** <summary>
/// 删除文件文件或图片
/// </summary>
/// <param name="path">当前文件的路径</param>
/// <returns>是否删除成功</returns>
public static bool FilePicDelete(string path)
{
bool ret = false;
System.IO.FileInfo file = new System.IO.FileInfo(path);
if (file.Exists)
{
file.Delete();
ret = true;
}
return ret;
}
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using System.IO;
namespace kkun
{
public abstract class basic
{
public basic()
{
//
// TODO: 在此处添加构造函数逻辑
//基类
}
//属性
private int oid;
private string o上传图像;
private string o简介;
private string o联系人;
private string o联系方式;
public int id
{
get { return this.oid; }
set {this.oid=value;}
}
public string 上传图像
{
get { return this.o上传图像; }
set { this.o上传图像 = value; }
}
public string 简介
{
get { return this.o简介; }
set { this.o简介 = value; }
}
public string 联系人
{
get { return this.o联系人; }
set { this.o联系人 = value; }
}
public string 联系方式
{
get { return this.o联系方式; }
set { this.o联系方式 = value; }
}
public int Remove()
{
return 0;
}
public string oFile(FileUpload f,RegularExpressionValidator r)
{
//获取文件类型
string oFileName = f.FileName.ToLower();
oFileName = oFileName.Substring(oFileName.Length - 3, 3);
/*
* 如果客户端指定了字面值正确但实际不存在的文件的话,将会上传一个空文件,即字节为0的同类型文件
* 暂时没有找到解决此问题的办法,
* 下面的方法只是解决了服务器端是否存在该文件,并不能验证客户端,
* 备注一下
* kkun于2007-2-6
*
//判断文件大小
if (f.PostedFile.ContentLength == 0 || f.PostedFile.ContentLength >= 5000)
{
r.ErrorMessage = "指定的文件大小不符合要求!您当前选择的文件大小为:"+f.PostedFile.ContentLength.ToString();
r.IsValid = false;
return null;
}
*/
//判断文件类型是否受支持
if (oFileName != "jpg" || oFileName != "jpeg" || oFileName != "gif" || oFileName != "png" || oFileName != "bmp")
{
r.ErrorMessage = "您上传的文件类型不受支持!";
r.IsValid = false;
//return null;
//找到原因了,就是上边这行代码!返回了null,
}
//生成随机数
Random oRandom = new Random();
string oStringRandom = oRandom.Next(9999).ToString();
//格式化日期作为文件名
DateTime oDateTime = new DateTime();
oDateTime = DateTime.Now;
string oStringTime = oDateTime.ToString();
oStringTime = oStringTime.Replace("-", null);
oStringTime = oStringTime.Replace(" ", null);
oStringTime = oStringTime.Replace(":", null);
//组合成文件名
string oFile = oStringTime + oStringRandom + "." + oFileName;
//如果指定目录不存在,将建立新的文件夹
string oSavePath = HttpContext.Current.Server.MapPath("~") + "//oFile//";
if (!Directory.Exists(oSavePath))
{
Directory.CreateDirectory(oSavePath);
}
//保存路径+完整文件名
oSavePath += oFile;
try
{
f.SaveAs(oSavePath);
return oFile;
}
catch (Exception exception)
{
throw exception;
}
finally
{
//
}
}
}
}
.NET中的 Image.FromFile 方法会锁住文件的解决方法
.NET中的 Image.FromFile 一旦使用后,对应的文件在一直调用 其生成的Image对象被Disponse前都不会被解除锁定,这就造成了一个问题,就是在这个图形被解锁前无法对图像进行操作(比如删除,修改等操作).
在以前用的过程中曾用过下面三个方法解决问题.
第一种方法,在要进行文件操作前将Image对象销毁.
PictureBox picbox;
if(picbox.Image!=null)picbox.Image.Disponse();
第二种方法,就是在加载图像的时候用一种方法替代:
System.Drawing.Image img = System.Drawing.Image.FromFile(filepath);
System.Drawing.Image bmp = new System.Drawing.Bitmap(img.Width, img.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp);
g.DrawImage(img, 0, 0);
g.Flush();
g.Dispose();
img.Dispose();
//下面开始使用bmp作为显示的Image对象
一直以来用的是上面的第二种方法.今天实验出来突然有种方法更加简单:
System.Drawing.Image img = System.Drawing.Image.FromFile(filepath);
System.Drawing.Image bmp = new System.Drawing.Bitmap(img);
img.Dispose();
//下面开始使用bmp作为显示的Image对象
呃.就这样了.
ASP.NET设计网络硬盘之删除文件夹
对于不再需要的文件/文件夹用户有权限做删除处理。这一节就介绍如何实现这一功能。
界面布置
主界面设计中有个“删除”按钮,其(ID)为btnDelete。用户在目录浏览中选中要删除的项后,单击该按钮就可以完成删除工作。
代码实现
在“设计”面板中双击“删除”按钮,为其添加事件处理程序如下:
privatevoidBtnDelete_Click(objectsender,System.EventArgse)
{
DeleteThings(FileList.SelectedItem.Text);
}
privatevoidDeleteThings(stringFullPath)
{
if(FullPath.IndexOf(".")>0)//删除文件
{
File.Delete(FullPath);
LoadDir(CurrentPath);//重新载入当前目录
}
else//删除目录
{
Directory.Delete(FullPath);
LoadDir(CurrentPath);//重新载入当前目录
}
}
删除时首先判断选中的是文件还是文件夹。如果是文件,则调用File.Delete()方法;反之则调用Directory.Delete()方法。删除成功后再调用LoadDir()方法显示更改后的目录内容。