接受的代码如下
string filePath = "";
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "保存文件";
sfd.InitialDirectory = @"C\Users\Administrator\Desktop"; sfd.Filter = "文本文件|*.txt|图片文件|*.jpg|视频文件|*.avi|所有文件|*.*";
//如果没有选择保存文件路径就一直打开保存框
while (true)
{
sfd.ShowDialog(this); filePath = sfd.FileName;
if (string.IsNullOrEmpty(filePath))
{ continue; }
else { break; } } //保存接收的文件
using (FileStream fsWrite = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write))
{
fsWrite.Write(buffer, 1, r - 1);
}
ShowMsg(socketSend.RemoteEndPoint + ": 接收文件成功");
}
比如我在客户端选择了一个mp3格式的文件发送到服务端,如何让服务端在接收文件的时候可以自动识别出是mp3格式的文件,或者是在接收完数据流之后,自动在接收的文件名后面添加格式.mp3 ??
一些文件有特殊的文件头,可以判断,但是更简单的是,将文件名作为你socket数据通讯的一部分直接传给服务器。
使用FileInfo加载你的saveFiledialog控件获取到的文件。然后使用FileInfo的Extension属性获得文件的类别(后缀扩展名)。
代码示例:
FileInfo fi = new FileInfo(saveFileDialog.FileName);
fi.Extension;//获取saveFileDialog控件获得文件的后缀名
有点意思,我做socket通信时,想在弹出的保存对话框里把接收的文件名作为默认的文件名。