private static byte[] GetFileContents(FileContentData[] fileDatas, string boundary)
{
var result = new List<byte>();
foreach (var fileData in fileDatas)
{
if (File.Exists(fileData.FilePath))
{
var file = new FileInfo(fileData.FilePath);
// Write Header Boundary
string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";
string header = string.Format(headerTemplate, fileData.Id, fileData.FilePath, fileData.ContentType);
result.AddRange(GetBytes("\r\n--" + boundary + "\r\n"));
result.AddRange(GetBytes(header));
// Write File Contents
using (var fileStream = new FileStream(fileData.FilePath, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[file.Length];
using (var memStream = new MemoryStream())
{
int read;
while ((read = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
memStream.Write(buffer, 0, read);
}
result.AddRange(memStream.ToArray());
}
}
}
}
return result.ToArray();
}