C# Post请求参数添加文件
public static string PostFile(string url, string fileName, string itemId)
{
try
{
if (File.Exists(fileName) == false)
{
string text = fileName + ":" + "不存在" + "\r\n";
File.AppendAllText(@"E:\同步上传\上传失败.txt", text);
return "";
}
else
{
FileInfo file = new FileInfo(fileName);
string boundary = "fc";
HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;
byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");
byte[] byteEnd = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
StringBuilder strContent = new StringBuilder();
strContent
.Append("Content-Disposition:form-data;name=\"file\";filename=\"" + file.Name + "\";name=\"bizCode\";name=\"fc\";")
.AppendLine()
.Append("Content-Type:application/octet-stream")
.AppendLine()
.AppendLine();
byte[] byteContent = Encoding.UTF8.GetBytes(strContent.ToString());
byte[] byteFile = File.ReadAllBytes(fileName);
req.Method = "POST";
req.ContentType = $"multipart/form-data;charset=utf-8;boundary={boundary}";
req.ContinueTimeout = 20000;
var reqStrem = req.GetRequestStream();
reqStrem.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length);
reqStrem.Write(byteContent, 0, byteContent.Length);
reqStrem.Write(byteFile, 0, byteFile.Length);
reqStrem.Write(byteEnd, 0, byteEnd.Length);
reqStrem.Close();
WebResponse resp = req.GetResponse();
StreamReader sr = new StreamReader(resp.GetResponseStream());
string result = sr.ReadToEnd();
var res = JsonConvert.DeserializeObject<dynamic>(result);
if (res.code != 200)
{
string text = itemId + ":" + fileName + "\r\n";
File.AppendAllText(@"E:\同步上传\上传失败.txt", text);
log4netHelper.WriteError($"同步上传调用接口{url}出错," + "code异常:" + res.code + ",msg:" + res.msg);
}
sr.Close();
resp.Close();
return res.data.filePath;
}
}
catch (Exception ex)
{
File.AppendAllText(@"E:\同步上传\上传失败.txt", ex.ToString());
log4netHelper.WriteError($"同步上传调用接口{url}异常:" + ex.ToString());
}
return "";
}