![]() |
#2
bygg2007-11-23 11:19
|
这是我写的一段局域网聊天工具中传输文件的代码,可只能传输小文件,如何传输大文件,大哥们帮帮忙!
private void btnSendFile_Click(object sender, System.EventArgs e)
{
// Thread t = new Thread(new ThreadStart(SendFile));
// t.Start();
Stream s;
OpenFileDialog d = new OpenFileDialog();
d.Filter = "All files (*.*)|*.*" ;
d.Multiselect = false;
if(d.ShowDialog() == DialogResult.OK)
{
if((s = d.OpenFile()) != null)
{
FileInfo fi = new FileInfo(d.FileName);
if(fi.Length>0)
{
if((fi.Length/(1024*1024))>3)
{
MessageBox.Show("发送文件请不要大于4M !");
return;
}
this.btnSendFile.Enabled = false;
byte[] contents = new byte[fi.Length];
string FileSize = (contents.Length<1049)?"0.001":Convert.ToString (Convert.ToDouble(contents.Length)/(1024*1024));
int length = (FileSize.Length>4) ? 5 : FileSize.Length;
FileSize = FileSize.Substring(0,length);
try
{
s.Read(contents, 0, contents.Length);
ServerConst.ChatServ.SendFile(fi.Name,contents, main.userInfo.UserID,FriendInfo.UserID);
string Message = string.Format("{0}\r\n[{1}] 向 [{2}] 发送了文件 [{3}] (共{4}M),\r\n稍后请注意查收......",DateTime.Now.ToString ("[yyyy-MM-dd HH:mm:ss]"),main.userInfo.NickName,FriendInfo.NickName,fi.Name,FileSize);
tbHistory.AppendText(Message + "\r\n\r\n");
ServerConst.ChatServ.Send(Message,main.userInfo.UserID,FriendInfo.UserID);
}
catch
{
MessageBox.Show("发送文件失败!");
}
this.btnSendFile.Enabled = true;
}
s.Close();
}
}
}