除了发送的文件主体之外,还能附加一些其他参数,例如本例中图片文件是主体,然后另外加了一个token参数,值为方法参数token,其他参数以此类推。
public static string HttpPost(string url, string filepath, string filename, string token)
{
string strResult;
try
{
FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read);
byte[] bytebuffer;
bytebuffer = new byte[fs.Length];
fs.Read(bytebuffer, 0, (int) fs.Length);
fs.Close();
string boundary = DateTime.Now.Ticks.ToString("X");
string Enter = "\r\n";
string strContent1 = "--" + boundary + Enter + "Content-Type: application/octet-stream" + Enter + "Content-Disposition: form-data; filename=\"" + "" + filename + "" + "\"; name=\"file\"" + Enter + Enter;
string strContent2 = Enter + "--" + boundary + Enter + "Content-Type: text/plain" + Enter + "Content-Disposition: form-data; name=\"token\"" + Enter + Enter + "" + token + "" + Enter + "--" + boundary + "--";
byte[] strContentByte1 = Encoding.UTF8.GetBytes(strContentByte1);
byte[] strContentByte2 = Encoding.UTF8.GetBytes(strContentByte2);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "multipart/form-data;boundary=" + boundary;
Stream myRequestStream = request.GetRequestStream();
myRequestStream.Write(strContentByte1, 0,strContentByte1.Length);
myRequestStream.Write(bytebuffer, 0, bytebuffer.Length);
myRequestStream.Write(strContentByte2, 0, strContentByte2.Length);
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
Stream streamReceive = response.GetResponseStream();
Encoding encoding = Encoding.UTF8;
StreamReader streamReader = new StreamReader(streamReceive, encoding);
strResult = streamReader.ReadToEnd();
streamReceive.Dispose();
streamReader.Dispose();
return strResult;
}
catch(Exception ex)
{
return ex.Message;
}
return strResult;
}