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

通过使用MemoryStream解决WCF流传输文件分段上传问题,利用BackgroundWorker实现异步操作。
最低0.47元/天 解锁文章
8934

被折叠的 条评论
为什么被折叠?



