在数据库上创建一个字段,名为File_F,数据类型为Image
Web 服务
//保存文件
[WebMethod]
public string saveFile(byte[] bytes)
{
string strProvider = "Data Source=datasouce;"
+ "Initial Catalog=database;"
+ "User ID=sa;"
+ "PassWord=";
SqlConnection Conn = new SqlConnection(strProvider);
Conn.Open();
string strSqlse1 = "Insert Into FileTable(File_F)"
+ "Values(@file)";
SqlCommand cmd = new SqlCommand(strSqlse1 , Conn);
//Create parameter for insert command and add to SqlCommand object.
SqlParameter prm = new SqlParameter("@file", SqlDbType.VarBinary, bytes.Length, ParameterDirection.Input, false,
0, 0, null, DataRowVersion.Current, bytes);
cmd.Parameters.Add(prm);
//Open connection, execute query, and close connection.
cmd.ExecuteNonQuery();
Conn.Close();
return "OK";
}
//读文件
[WebMethod]
public byte[] readFile()
{
SqlDataReader dr = null;
string strProvider = "Data Source=datasource;"
+ "Initial Catalog=database;"
+ "User ID=sa;"
+ "PassWord=password";
SqlConnection Conn = new SqlConnection(strProvider);
Conn.Open();
SqlCommand cm = new SqlCommand();
cm.Connection = Conn;
cm.CommandType = CommandType.Text;
cm.CommandText = "select File_F from FileTable";
dr = cm.ExecuteReader();
byte[] File = null;
if (dr.Read())
{
File = (byte[])dr[0];
}
Conn.Close();
return File;
}
客户端,将文件转为文件流
FileStream fsBLOBFile = new FileStream(strBLOBFilePath, FileMode.Open, FileAccess.Read);
Byte[] bytBLOBData = new Byte[fsBLOBFile.Length];
fsBLOBFile.Read(bytBLOBData, 0, bytBLOBData.Length);
fsBLOBFile.Close();
将文件流转为文件(f1为返回的byte[])
string strTga = saveFileDialog1.FileName;
FileStream fs;
FileInfo fi = new System.IO.FileInfo(strTga);
fs = fi.OpenWrite();
fs.Write(f1, 0, f1.Length);
fs.Close();