一、Web Service端
新建->项目->ASP.NET Web服务应用程序
//Service.cs
public class Service : System.Web.Services.WebService
{
public Service () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
//[WebMethod]
//public string HelloWorld() {
//
return "Hello World";
//}
[WebMethod]
public int UploadFile(string fileName, int Length, byte[] file_data)
{
//上传二进制文件
string constr = "server=127.0.0.1;database=tb_file;Integrated Security=SSPI;";
SqlCommand
cmd = new SqlCommand();
SqlConnection con = new SqlConnection(constr);
//连接数据库
cmd.Connection = con;
//获取或设置一个值,该值指示如何解释 CommandText 属性,CommandType.Text指SQL 文本命令
cmd.CommandType = CommandType.Text;
//连接打开
if (con.State == 0)
con.Open();
cmd.CommandText = "insert into tb_file (filename,filesize,filedata) values( @filename, @filesize, @filedata)";
SqlParameter spFilename = new SqlParameter("@filename", SqlDbType.VarChar);
spFilename.Value = fileName;
cmd.Parameters.Add(spFilename);
SqlParameter spFile = new SqlParameter("@filedata", SqlDbType.VarBinary);//SqlDbType.VarBinary:Byte 类型的 Array。二进制数据的可变长度流,范围在 1 到 8,000 个字节之间。如果字节数组大于 8,000 个字节,隐式转换会失败。在使用比 8,000 个字节大的字节数组时,请显式设置对象。
spFile.Value = file_data;
cmd.Parameters.Add(spFile);
SqlParameter spFilesz = new SqlParameter("@filesize", SqlDbType.Int);
spFilesz.Value = Length;
cmd.Parameters.Add(spFilesz);
//执行前面构造的sql查询命令
int count = cmd.ExecuteNonQuery();
//服务器收到客户端发送的这个数据以后,先保存在数据库中,,然后顺便在本地保存一个副本
string str_SavePath = "F:\C#学习作业、\WebClient\";
FileStream newfs = new FileStream(str_SavePath + fileName, FileMode.Create, FileAccess.Write);
newfs.Write(file_data, 0, Length);