c#用savefilediglog接收文件的时候如何自动识别是什么格式的文件?

接受的代码如下
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 ??

3个回答

一些文件有特殊的文件头,可以判断,但是更简单的是,将文件名作为你socket数据通讯的一部分直接传给服务器。

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复qq_33560012: 看你的通讯协议了。
3 年多之前 回复
qq_33560012
打跐溜滑 感谢您的回答,想再请教一下,将文件名作为socket数据通讯的一部分传输的时候,是使用filestream类操作吗?
3 年多之前 回复
qq_33560012
打跐溜滑 感谢您的回答,想再请教一下,将文件名作为socket数据通讯的一部分传输的时候,是使用filestream类操作吗?
3 年多之前 回复

使用FileInfo加载你的saveFiledialog控件获取到的文件。然后使用FileInfo的Extension属性获得文件的类别(后缀扩展名)。
代码示例:
FileInfo fi = new FileInfo(saveFileDialog.FileName);
fi.Extension;//获取saveFileDialog控件获得文件的后缀名

有点意思,我做socket通信时,想在弹出的保存对话框里把接收的文件名作为默认的文件名。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问