wcf 流传输上传文件不能分段上传的问题已解决。
技巧就是上传的流参数不用FileStream 用MemoryStream即可。
以下是代码:
服务契约类:
[ServiceContract()]
public interface IMyServer
{
[OperationContract]
void UploadFile(UploadPartMessage msg);
}
消息契约:
[MessageContract]
public class UploadPartMessage
{
[MessageHeader]
public string FileName { get; set; }
[MessageHeader]
public long FileLength { get; set; }
/// <summary>
/// 保存上传的数据
/// </summary>
[MessageBodyMember]
public Stream Stream { get; set; }
/// <summary>
/// 当前分块的大小
/// </summary>
[MessageHeader]
public int PartSize { get; set; }
/// <summary>
/// 总分块数
/// </summary>
[MessageHeader]
public int TotalPartCount { get; set; }
[MessageHeader]
public int PartID { get; set; }
[MessageHeader]
public bool IsLastPart { get; set; }
/// <summary>
/// 分块在文件中的位置
/// </summary>
[MessageHeader]
public long Position { get; set; }
}
服务的实现
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, IncludeExceptionDetailInFaults = true)]
class MyServer : IMyServer
{
string baseDirectory =Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"server") ;
public void UploadFile(UploadPartMessage msg)
{
Console.Wri