/// <summary> /// 异步将数据写入当前的请求流中 /// </summary> /// <param name="asyncData"></param> public override void WriteToAsync(AsyncStreamProcessData asyncData) { base.WriteToAsync(asyncData); var buffer = (Message.Encoding ?? Encoding.UTF8).GetBytes(Content ?? ""); asyncData.AsyncStreamWrite(buffer, 0, buffer.Length, false, null); }
/// <summary> /// 异步将数据写入当前的请求流中 /// </summary> /// <param name="asyncData"></param> public override void WriteToAsync(AsyncStreamProcessData asyncData) { base.WriteToAsync(asyncData); //异步写入的时候,如果没有文件,则一次性写入 if (ContentType == ContentType.FormUrlEncoded) { asyncData.AsyncStreamWrite((ContentType == ContentType.FormUrlEncoded ? System.Text.Encoding.ASCII : Message.Encoding).GetBytes(ProcessedData.Where(s => s.Value != null).Select(s => s.Key + "=" + s.Value).Join("&")), false, null); return; } //否则先写入普通数据,再写入文件。 byte[] textBuffer = null; using (var ms = new MemoryStream()) { //写入普通区域 foreach (var v in ProcessedData) { if (v.Value == null) { continue; } var str = "--" + RequestBoundary + "\r\nContent-Disposition: form-data; name=\"" + v.Key + "\"\r\n\r\n"; ms.Write(Message.Encoding.GetBytes(str)); if (!v.Value.IsNullOrEmpty()) { ms.Write(Message.Encoding.GetBytes(v.Value)); } ms.Write(Message.Encoding.GetBytes("\r\n")); } ms.Close(); textBuffer = ms.ToArray(); } asyncData.AsyncStreamWrite(textBuffer, true, _ => { _currentAsyncFileIndex = 0; if (AsyncData.Exception != null) { return; } WriteFileAsync(); }); }
/// <summary> /// /// </summary> /// <param name="asyncData"></param> public override void WriteToAsync(AsyncStreamProcessData asyncData) { base.WriteToAsync(asyncData); asyncData.AsyncStreamWrite(Buffer, 0, Buffer.Length, false, null); }