C# HttpClient上传文件到服务器(multipart/form-data)

string reqUrl = JsonrpcHttpClient.MakeRpcUrl(typeof(Wfm_SimReport).Name, "save");

using (HttpClient client = new HttpClient(new HttpClientHandler() { UseCookies = false }))//若想手动设置Cookie则必须设置UseCookies = false
{
                               
    string boundary = string.Format("----WebKitFormBoundary{0}",DateTime.Now.Ticks.ToString("x"));

    MultipartFormDataContent content = new MultipartFormDataContent(boundary);

    #region 设置请求参数

    content.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data");
    content.Headers.Add("Cookie", TokenManager.Token);
    content.Headers.Add("client", "true");

    #endregion

    if (string.IsNullOrEmpty(fullPath) && !File.Exists(fullPath))
    {
        return false;
    }

    string fileName = Path.GetFileName(fullPath);

    #region Stream请求

    FileStream fStream = File.Open(fullPath, FileMode.Open, FileAccess.Read);

    content.Add(new StreamContent(fStream, (int)fStream.Length), "file", fileName);
                
    #endregion

    content.Add(new StringContent(JsonHelper.Serialize(entity)), "dtoStr");
              
    var result = client.PostAsync(reqUrl, content).Result;

    try
    {
        if (result.IsSuccessStatusCode)
        {
            string rslt = result.Content.ReadAsStringAsync().Result;

            Debug.WriteLine(rslt);

            return true;
        }
    }
    catch (Exception ex)
    {
        Debug.WriteLine(string.Format("获取服务器返回结果错误:消息:{0},堆栈:{1}",ex.Message,ex.StackTrace));
    }
    finally
    {
        //关闭文件流
        fStream.Close();
        client.Dispose();
    }                
 }

猜你喜欢

转载自blog.csdn.net/qq_35106907/article/details/85260639