using System;
using System.Text;
using System.IO;
namespace Alipay.EasySDK.Kernel.Util
{
///
/// HTTP multipart/form-data格式相关工具类
///
public static class MultipartUtil
{
///
/// 获取Multipart分界符
///
/// 用作分界的随机字符串
/// Multipart分界符
public static byte[] GetEntryBoundary(string boundary)
{
return Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");
}
///
/// 获取Multipart结束标记
///
/// 用作分界的随机字符串
/// Multipart结束标记
public static byte[] GetEndBoundary(string boundary)
{
return Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
}
///
/// 获取Multipart中的文本参数结构
///
/// 字段名称
/// 字段值
/// 文本参数结构
public static byte[] GetTextEntry(string fieldName, string fieldValue)
{
string entry = "Content-Disposition:form-data;name=\""
+ fieldName
+ "\"\r\nContent-Type:text/plain\r\n\r\n"
+ fieldValue;
return AlipayConstants.DEFAULT_CHARSET.GetBytes(entry);
}
///
/// 获取Multipart中的文件参数结构(不含文件内容,只有文件元数据)
///
/// 字段名称
/// 文件路径
/// 文件参数结构(不含文件内容)
public static byte[] GetFileEntry(String fieldName, String filePath)
{
ArgumentValidator.CheckArgument(File.Exists(filePath),
Path.GetFullPath(filePath) + "文件不存在");
ArgumentValidator.CheckArgument(Path.GetFileName(filePath).Contains("."),
"文件名必须带上正确的扩展名");
String entry = "Content-Disposition:form-data;name=\""
+ fieldName
+ "\";filename=\""
+ Path.GetFileName(filePath)
+ "\"\r\nContent-Type:application/octet-stream"
+ "\r\n\r\n";
return AlipayConstants.DEFAULT_CHARSET.GetBytes(entry);
}
///
/// 往指定流中写入整个字节数组
///
/// 流
/// 字节数组
public static void WriteToStream(Stream stream, byte[] content)
{
stream.Write(content, 0, content.Length);
}
}
}