以前的文件操作的代码整理
1. 遍列 文件夹下的所有文件 绑定DG上-下载
byte[] data;
private void Data_Bind()
{
string directory=Server.MapPath(".");
DirectoryInfo dir=new DirectoryInfo(directory);
DataTable dt=new DataTable();
dt.Columns.Add("name",typeof(string));
dt.Columns.Add("len",typeof(string));
dt.Columns.Add("type",typeof(string));
DataRow dr;
foreach(FileInfo fi in dir.GetFiles())
{
dr=dt.NewRow();
dr["name"]=fi.FullName;
dr["len"]=fi.Length;
dr["type"]=fi.Extension;
dt.Rows.Add(dr);
}
DataGrid1.DataSource=dt.DefaultView;
DataGrid1.DataBind();
}
private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName=="download")
{
string filename=Path.GetFileName(e.Item.Cells[0].Text);
Response.AppendHeader("content-Disposition","attachment;filename="+Server.UrlEncode(filename));
Response.ContentType="application/octet-strem";
FileStream fs=new FileStream(e.Item.Cells[0].Text,FileMode.OpenOrCreate);
BinaryReader br=new BinaryReader(fs);
data=br.ReadBytes(int.Parse(e.Item.Cells[1].Text));
Response.BinaryWrite(data);
Response.Flush();
Response.End();
}
}
2. 读取 文本文件
string filename=File1.PostedFile.FileName;
//string filename=Server.MapPath(".")+"\\test.txt";
FileStream fs=new FileStream(filename,FileMode.Open);
StreamReader sr=new StreamReader(fs,Encoding.Default);
// while(sr.Peek()!=-1)
// {
// sb.Append(sr.ReadLine());
// sb.Append("\n\r");
// }
string strtmp="";
while((strtmp=sr.ReadLine())!=null)
{
sb.Append(strtmp);
sb.Append("\n\r");
}
this.TextBox1.Text=sb.ToString();
sr.Close();
fs.Close();
3.写文本文件
string filename=Server.MapPath(".")+"\\test1.txt";
FileStream fs=new FileStream(filename,FileMode.Create);
StreamWriter sw=new StreamWriter(fs);
sw.WriteLine(this.TextBox1.Text);
sw.Close();
fs.Close();
4. 上传
string filename=Path.GetFileName(File1.PostedFile.FileName);
string newfile=Server.MapPath(".")+"\\"+filename;
File1.PostedFile.SaveAs(newfile);
5. 图片存储
string filename=File1.PostedFile.FileName;
FileInfo fi=new FileInfo(filename);
FileStream fs=new FileStream(filename,FileMode.OpenOrCreate);
BinaryReader br=new BinaryReader(fs);
data=br.ReadBytes((int)fi.Length); //把一个图片转换成二进制数组
SqlConnection cnn=new SqlConnection("server=.;uid=sa;database=student;");
string sql="insert into studentinfo(img) values(@img)";
SqlCommand cmd=new SqlCommand(sql,cnn);
cmd.Parameters.Add(new SqlParameter("@img",SqlDbType.Image));
cmd.Parameters["@img"].Value=data;
cnn.Open();
cmd.ExecuteNonQuery();
cmd.Dispose();
cnn.Close();
6. 转移一个可执行文件
FileInfo fi=new FileInfo("f:\\rdc8.exe");
long len=fi.Length;
FileStream fs=new FileStream("f:\\rdc8.exe",FileMode.Open);
FileStream fs1=new FileStream(Server.MapPath(".")+"\\"+"rdc8.exe",FileMode.Create);
BinaryReader br=new BinaryReader(fs);
BinaryWriter bw=new BinaryWriter(fs1);
data=br.ReadBytes((int)len);
bw.Write(data);
//
// br.BaseStream.Seek(0,SeekOrigin.Begin);
// bw.BaseStream.Seek(0,SeekOrigin.End);
//
// while(br.BaseStream.Position<br.BaseStream.Length)
// {
// bw.Write(br.ReadByte());
// }
br.Close();
bw.Close();
fs.Close();
fs1.Close();
7. 照片显示
string id=Request.QueryString["id"];
SqlConnection cnn=new SqlConnection("server=.;uid=sa;database=student;pwd=");
SqlCommand cmd=new SqlCommand("select * from 学生档案 where s_id="+id,cnn);
cnn.Open();
SqlDataReader dr=cmd.ExecuteReader();
if(dr.Read())
{
Response.BinaryWrite((byte[])dr["照片"]);
}
8. 一条包含照片的数据保存到数据库
string filename=File1.PostedFile.FileName;
FileInfo fi=new FileInfo(filename);
FileStream fs=new FileStream(filename,FileMode.OpenOrCreate);
BinaryReader br=new BinaryReader(fs);
data=br.ReadBytes((int)fi.Length); //把一个图片转换成二进制数组
string XH="007";
string XM="w";
string XB="s";
string BJ="21";
SqlConnection cnn=new SqlConnection("server=.;uid=sa;database=student;pwd=");
string sql="insert into 学生档案(学号,姓名,性别,班级,照片) values(@XH,@XM,@XB,@BJ,@img)";
SqlCommand cmd=new SqlCommand(sql,cnn);
cmd.Parameters.Add(new SqlParameter("@img",SqlDbType.Image));
cmd.Parameters.Add(new SqlParameter("@XH",SqlDbType.VarChar));
cmd.Parameters.Add(new SqlParameter("@XM",SqlDbType.VarChar));
cmd.Parameters.Add(new SqlParameter("@XB",SqlDbType.Char));
cmd.Parameters.Add(new SqlParameter("@BJ",SqlDbType.VarChar));
cmd.Parameters["@img"].Value=data;
cmd.Parameters["@XH"].Value=XH;
cmd.Parameters["@XM"].Value=XM;
cmd.Parameters["@XB"].Value=XB;
cmd.Parameters["@BJ"].Value=BJ;
cnn.Open();
cmd.ExecuteNonQuery();
cmd.Dispose();
cnn.Close();
fs.Close();
br.Close();
9. 生成验证码的页面
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string str = getRandom();
Session.Clear();
Session["YzPwd"] = str;
Random rd = new Random(unchecked((int)DateTime.Now.Ticks));
Bitmap image=new Bitmap(42,16);
Graphics g=Graphics.FromImage(image);
g.Clear(Color.FromArgb(200,200,200));
g.DrawString(str,new Font("Times New Roman", 13 ,FontStyle.Bold),new SolidBrush(Color.Blue),0,0);
g.DrawLine(new Pen(Color.Black,1),new Point(rd.Next(1,20),rd.Next(0,19)),new Point(rd.Next(40,52),rd.Next(0,19)));
g.DrawLine(new Pen(Color.Black,1),new Point(rd.Next(1,20),rd.Next(0,19)),new Point(rd.Next(40,52),rd.Next(0,19)));
image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
}
private string getRandom()
{
//unchecked 关键字用于控制整型算术运算和转换的溢出检查上下文
Random ra = new Random(unchecked((int)DateTime.Now.Ticks));
//刻度数 Ticks 为自 0001 年 1 月 1 日午夜 12:00 以来所经过时间以 100 毫微秒为间隔表示时的数字
//当前时间的刻度数来为依据(种子)随机生成数字
return ra.Next(1000,9999).ToString(); //Next方法 返回 最小数1000 最大数9999 之间的一个随机数
}
浙公网安备 33010602011771号