日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C#中的multipart/form-data提交文件和參數_C#教程

作者:qq_34611658 ? 更新時間: 2022-08-02 編程語言

C# multipart/form-data提交文件和參數

 public static string PostJsonData(string url, Dictionary<string, string> dic, string imgfile)
        {       
       string str = "";
            try
            {
                HttpClient client = new HttpClient();
                var postContent = new MultipartFormDataContent();
                string boundary = string.Format("--{0}", DateTime.Now.Ticks.ToString("x"));
                postContent.Headers.Add("ContentType", $"multipart/form-data, boundary={boundary}");
               string image_file_Type="faceImage";
                postContent.Add(new ByteArrayContent(File.ReadAllBytes(imgfile)), image_file_Type, imgfile);
                foreach (var key in dic.Keys)
                {
                    postContent.Add(new StringContent(dic[key].ToString()), key);
                }
                HttpResponseMessage response = client.PostAsync(url, postContent).Result;
                str = response.Content.ReadAsStringAsync().Result;
                
            }
            catch (Exception ex)
            {
                Log.Print("PostJsonData:" + ex.ToString());
            }
            return str;
  }

C# POST multipart/form-data案例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using XingcOpen.ILS.Business.Interface;
using XingcOpen.ILS.Core.Model;
using XingcOpen.ILS.Core.Log;
using XingcOpen.ILS.Business.Config.Module;
using XingcOpen.ILS.Business.Config;
using System.Threading;
using System.IO;
using Newtonsoft.Json.Linq;
using System.Net.Http.Headers;
using Newtonsoft.Json;
using System.Windows.Forms;
namespace XingcOpen.ILS.Business.ExpressSystemApi.Client
{
    /// <summary>
    /// 韓國圖片上報接口
    /// </summary>
    class HanGuoLogisticsPic : ISendPackageInfo
    {
        public bool CheckProcessHasRun()
        {
            throw new NotImplementedException();
        }
        UserConfigInfo config = UserConfigHelper.GetInstance().userConfig;
        private static object _loc = new object();
        private Thread DSuPicUpload;
        public bool CheckTicketNumHasEffective(string ticketsNum)
        {
            throw new NotImplementedException();
        }
        public CommonResult GeneralSendTicketsNumAndPackageWeight(TicketInfo info)
        {
            throw new NotImplementedException();
        }
        public bool SendTicketsNumAndPackageWeight(string barcode, double weight, double length, double width, double height, double volume)
        {
            //定義圖片絕對路徑
            //var ListImage = config.PicSavePath + @"\" + DateTime.Now.ToString("yyyyMMdd") + @"\" + barcode + ".jpg";
            try
            {
                圖片上傳
                DSuPicUpload = new Thread(() => UploadPic(barcode));
                DSuPicUpload.Start();
                return true;
            }
            catch (Exception ex)
            {
                Logger<HanGuoLogisticsPic>.Error("線程啟動異常," + ex.Message);
                return false;
            }
        }
        public T SendTicketsNumAndPackageWeight<T>(Dictionary<string, object> packageDic)
        {
            throw new NotImplementedException();
        }
        #region 圖片上報接口
        private void UploadPic(string barcode)
        {
            while (true)
            {
                if (config.IsSavePic == 1)
                {
                    //上傳圖片
                    DoLocalImgUpload(Path.Combine(config.PicSavePath, DateTime.Now.ToString("yyyyMMdd")), barcode);
                    DoLocalImgUpload(Path.Combine(config.PicSavePath, DateTime.Now.AddDays(-1).ToString("yyyyMMdd")), barcode);
                }
                Thread.Sleep(3000);
            }
        }
        public void DoLocalImgUpload(string picFilepath, string barcode)
        {
            try
            {
                if (Directory.Exists(picFilepath))
                {
                    DirectoryInfo directoryInfo = new DirectoryInfo(picFilepath);
                    //取圖片文件夾下的1分鐘之前的圖片的前5張(按創建時間排序)
                    //防止文件被占用
                    lock (_loc)
                    {
                        var topfiles = directoryInfo.EnumerateFiles().
                        Where(p => p.CreationTime <= DateTime.Now.AddMinutes(-1)).
                        OrderBy(f => f.CreationTime).
                        Take(5).ToList();
                        //  topfiles.Distinct();
                        topfiles.OrderByDescending(x => x.FullName).Distinct();
                        if (topfiles.Count > 0)
                        {
                            //循環執行上傳
                            foreach (var fileInfo in topfiles)
                            // for (var i = 0; i < topfiles.Count; i++)
                            {
                                Logger<HanGuoLogisticsPic>.Debug("topfiles.count:" + topfiles.Count + "  fileInfo:" + fileInfo.FullName);
                                UploadLocalByName(fileInfo.FullName, barcode);
                                //topfiles.Remove(fileInfo);
                            }
                            topfiles.Clear();
                            Thread.Sleep(1000);
                            Logger<HanGuoLogisticsPic>.Debug("圖片上傳線程循環上傳中!");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger<HanGuoLogisticsPic>.Error(".圖片文件上傳發生異常!", ex);
            }
        }
        public void UploadLocalByName(string picFilepath, string barcode)
        {
            string url = @"http://www.kwaiden.com/SendPackageInfo/ApiPhoto_I.asp";
            try
            {
                Logger<HanGuoLogisticsPic>.Debug("picFilepath:" + picFilepath);
                if (File.Exists(picFilepath))
                {
                    int pos = picFilepath.LastIndexOf("\\");
                    string name = picFilepath.Substring(pos + 1);
                    string nums = name.Replace(".jpg", "");
                    //string userPhoto = string.Empty;
                    //byte[] bytes = File.ReadAllBytes(picFilepath);
                    //userPhoto = Convert.ToBase64String(bytes);
                    //userPhoto = userPhoto.Replace("+", "%2B");
                    if (UploadImages(nums, name, picFilepath, url, barcode))
                    {
                        //上傳完是否需要刪除?
                        File.Delete(picFilepath);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger<HanGuoLogisticsPic>.Error(".圖片文件上傳發生異常!", ex);
            }
        }
        public bool UploadImages(string code, string name, string picFilepath, string url, string barcode)
        {
            try
            {
                string result = SendData(picFilepath, name, url, barcode, null, null);
                var i = JObject.Parse(result);
                if (i["result"].ToString().Trim() == "true")
                {
                    //播放聲音文件
                    string strPath = Path.Combine(Application.StartupPath, @"config\sound") + "\\" + "Right.wav";
                    if (File.Exists(strPath))
                    {
                        System.Media.SoundPlayer sndPlayer2 = new System.Media.SoundPlayer(strPath);
                        sndPlayer2.Play();
                    }
                    else
                    {
                        Logger<HanGuoLogistics>.Error("PlaySoundSendSuccess。 不存在聲音文件:" + strPath);
                    }
                    return true;
                }
                else
                {
                    //播放聲音文件
                    string strPath = Path.Combine(Application.StartupPath, @"config\sound") + "\\" + "Wrong.wav";
                    if (File.Exists(strPath))
                    {
                        System.Media.SoundPlayer sndPlayer2 = new System.Media.SoundPlayer(strPath);
                        sndPlayer2.Play();
                    }
                    else
                    {
                        Logger<HanGuoLogistics>.Error("PlaySoundSendSuccess。 不存在聲音文件:" + strPath);
                    }
                    return false;
                }
            }
            catch (Exception e)
            {
                Logger<HanGuoLogisticsPic>.Error("上傳圖片異常   " + e);
            }
            return false;
        }
        public string SendData(string picFilepath, string name, string url, string barcode, string workConsole, string destination)
        {
            var fileContent1 = new ByteArrayContent(File.ReadAllBytes(picFilepath));
            fileContent1.Headers.ContentDisposition = new ContentDispositionHeaderValue("file")
            {
                FileName = name
            };
            var postContent = new MultipartFormDataContent();
            postContent.Add(new StringContent(barcode), "ticketsNum");
            postContent.Add(fileContent1);//圖片文件
            postContent.Add(new StringContent(workConsole), "workConsole");
            postContent.Add(new StringContent(destination), "destination");
            Logger<HanGuoLogisticsPic>.Debug("向"+config.HttpPostApiAddr+"發送數據"+JsonConvert.SerializeObject(postContent));
            string httpResult = GetHttpPostResponse(url, postContent);
            Logger<HanGuoLogisticsPic>.Debug("接收" + config.HttpPostApiAddr + "返回數據" + httpResult);
            return httpResult;
        }
        private string GetHttpPostResponse(string url, MultipartFormDataContent postData)
        {
            string result = "";
            //form表單格式傳參
            try
            {
                HttpClient client = new HttpClient();
                HttpResponseMessage response = client.PostAsync(url, postData).Result;
                result = response.Content.ReadAsStringAsync().Result;
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }
            Logger<HanGuoLogisticsPic>.Debug($"HanGuoLogistics 返回數據:{result}");
            return result;
        }
        /// <summary>
        /// 參數上報
        /// </summary>
        public class ImageInfo
        {
            public string ticketsNum { get; set; }
            public string file { get; set; }
            public string workConsole { get; set; }
            public string destination { get; set; }
        }
        /// <summary>
        /// 返回信息
        /// </summary>
        public class ImageResult
        {
            public bool result { get; set; }
            public string message { get; set; }
        }
        #endregion
    }
}

原文鏈接:https://blog.csdn.net/qq_34611658/article/details/105530402

欄目分類
最近更新