/// <summary> /// Pre-compiles the multipart data required for a given file. /// </summary> /// <param name="fileEntry">The provided file infos.</param> /// <param name="boundary">The multipart's boundary.</param> /// <returns> /// A description containing the file's stream and the part's header and footer. /// </returns> private MultiPartFileDescriptor BuildMultiPartFileDescriptor(KeyValuePair <string, Stream> fileEntry, string boundary) { MultiPartFileDescriptor result = new MultiPartFileDescriptor(); result._Stream = fileEntry.Value; // Build header StringBuilder sb = new StringBuilder(); Stream fileStream = fileEntry.Value; if (fileStream is FileStream) { FileStream fs = (FileStream)fileStream; sb.Append("Content-Disposition: form-data; name=\"" + fileEntry.Key + "\"; filename=\"" + Path.GetFileName(fs.Name) + "\"" + "\r\n"); } else if (fileStream is MemoryStream) { sb.Append("Content-Disposition: form-data; name=\"" + fileEntry.Key + "\"; filename=\"Memory-Stream-Upload\"" + "\r\n"); } sb.Append("Content-Type: application/octet-stream" + "\r\n"); sb.Append("\r\n"); result._Header = Encoding.UTF8.GetBytes(sb.ToString()); result._Footer = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n"); return(result); }
/// <summary> /// Pre-compiles the multipart data required for a given file. /// </summary> /// <param name="fileEntry">The provided file infos.</param> /// <param name="boundary">The multipart's boundary.</param> /// <returns> /// A description containing the file's stream and the part's header and footer. /// </returns> private MultiPartFileDescriptor BuildMultiPartFileDescriptor(KeyValuePair<string, FileStream> fileEntry, string boundary) { MultiPartFileDescriptor result = new MultiPartFileDescriptor(); result._Stream = fileEntry.Value; // Build header StringBuilder sb = new StringBuilder(); FileStream fileStream = fileEntry.Value; sb.Append("Content-Disposition: form-data; name=\"" + fileEntry.Key + "\"; filename=\"" + Path.GetFileName(fileStream.Name) + "\"" + "\r\n"); sb.Append("Content-Type: application/octet-stream" + "\r\n"); sb.Append("\r\n"); result._Header = Encoding.UTF8.GetBytes(sb.ToString()); result._Footer = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n"); return result; }