110,534
社区成员
发帖
与我相关
我的任务
分享
namespace FileTransfer.Service
{
[MessageContract]
public class FileStreamWrapper
{
[MessageHeader]
public string FileName { get; set; }
[MessageBodyMember]
public Stream Data { get; set; }
}
[ServiceContract]
public interface IFileService
{
[OperationContract]
void Store(FileStreamWrapper file);
}
public class FileService : IFileService
{
private static DirectoryInfo dir;
public static DirectoryInfo FileDirectory
{
get
{
if (dir == null)
{
dir = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Files"));
if (!dir.Exists) { dir.Create(); }
}
return dir;
}
}
public void Store(FileStreamWrapper file)
{
string path = Path.Combine(FileDirectory.FullName, file.FileName);
FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None);
var src = file.Data;
var buffer = new byte[4096];
int bytesRead = 0;
while ((bytesRead = src.Read(buffer, 0, buffer.Length)) > 0)
{
fs.Write(buffer, 0, bytesRead);
Console.WriteLine("WriteData: {0} - {1} - {2}", file.FileName, bytesRead, DateTime.Now);
}
fs.Close();
}
}
}