public partial class CameraFrm : Form
{ //private IOrderSyncServices orderBE = AccessOrderSync.GetOrderSyncServices(); //private string sysCode = ""; private string url = @"http://supervise.eat.sc/Video/upload"; public CameraFrm() { InitializeComponent(); //SystemInfo si = new SystemInfo(); //this.sysCode = si.getRNum(); //DataSet ds = SQLiteHelper.Query("select sub_guid,openid from sc_license where code='" + this.sysCode + "'"); //string guid = ds.Tables[0].Rows[0]["openid"].ToString();//总店的GUID FA3BF2D8-1FC7-3B6F-90F0-60AA22525305 //string suid = ds.Tables[0].Rows[0]["sub_guid"].ToString();//分店GUID 19DBBC08-D4C9-CE21-879A-8927F8DC8C99 System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = true; Control.CheckForIllegalCrossThreadCalls = false; } /// <summary> /// 摄像头ID /// </summary> public string cameraid { get; set; }//摄像头ID public string ACTIVE { get; set; }//是否启动摄像头start=启动 public string guid { get; set; }//总店GUID public string suid { get; set; }//分店GUID private bool falg { get; set; }//是否启动 private string sPath { get; set; }//摄像头抓取图片存放地址 private string cameraFile { get; set; }//摄像头地址 private void CameraFrm_Load(object sender, EventArgs e) { this.ImageFile(); this.ResultCameraFile(this.cameraid); this.timer1.Enabled = true; if (this.ACTIVE == "start") { this.falg = true; this.CreateUpdata(); } else { this.falg = false; Application.ExitThread(); this.Close(); } } private int count = 0; private string point = ""; private string strs = "图片上传中"; private void timer2_Tick(object sender, EventArgs e) { this.label1.Text = this.strs + this.point; this.point = this.point + "."; if (this.count >= 5) { this.count = 0; this.point = "."; } this.count++; } public void CreateUpdata() { try { Thread mainThread = new Thread(new ThreadStart(CreateThread)); mainThread.Start(); } catch (Exception ex) { Application.ExitThread(); this.Close(); } } private void CreateThread() { try { while (falg) { Thread minorThread = new Thread(new ThreadStart(ImageCameralUpload)); minorThread.Start(); Thread.Sleep(700); } } catch (Exception ex) { Application.ExitThread(); this.Close(); } } /// <summary> ///向服务器上传摄像头所拍的照片 /// </summary> public void ImageCameralUpload() { try { string sign = "";// ResultPostArguments(appid, cameraid, guid, suid); string OpathImage = this.GetPicUrl(); string str = PostData(this.url, sign, this.guid, this.suid, this.cameraid, OpathImage); if (str != "") { var jObject = JObject.Parse(str); if (jObject["code"].ToString()=="0") { File.Delete(OpathImage); } else { this.falg = false; timer1.Enabled = false; Thread.Sleep(5000); File.Delete(OpathImage); Application.ExitThread(); this.Close(); } } } catch (Exception ex) { Application.ExitThread(); this.Close(); } } //获取签名 private string ResultPostArguments(string appid, string cameraid, string guid, string suid) { int count = 0; StringBuilder builder = new StringBuilder(); Dictionary<string, string> dic = new Dictionary<string, string>(); dic.Add("cameraid", cameraid); dic.Add("guid", guid); dic.Add("suid", suid); //升序排列 var dicSort = from objDic in dic orderby objDic.Key select objDic; foreach (KeyValuePair<string, string> kvp in dicSort) { count++; builder.Append(kvp.Key + "=" + kvp.Value); if (count != dic.Count) { builder.Append("&"); } } string appkey = "f6ac54df8aee6e3c0a4d1ac0b69db6f7"; string sign = md5(builder.ToString() + appid + appkey).ToLower(); return sign; } //MD5加密 private string md5(String input) { MD5CryptoServiceProvider Md5 = new MD5CryptoServiceProvider(); return BitConverter.ToString(Md5.ComputeHash(Encoding.UTF8.GetBytes(input))).Replace("-", ""); } /// <summary> /// 向服务器上传图片 /// </summary> /// <param name="url">服务器地址</param> /// <param name="sign">签名</param> /// <param name="appId">APPID</param> /// <param name="jpegPath">图片地址</param> /// <returns></returns> public string PostData(string url, string sign, string guid, string suid, string cameraid, string imageFile) { try { FileStream file = new FileStream(imageFile, FileMode.Open); byte[] bb = new byte[file.Length]; file.Read(bb, 0, (int)file.Length); file.Close(); MultiPartFormData form = new MultiPartFormData(); form.AddFormField("sign", sign); form.AddFormField("guid", guid); form.AddFormField("suid", suid); form.AddFormField("cameraid", cameraid); form.AddStreamFile("img", Path.GetFileName(imageFile), bb); form.PrepareFormData(); form.GetFormData(); string contentType = "multipart/form-data; boundary=" + form.Boundary; HttpUploadHelper help = new HttpUploadHelper(); HttpItem item = new HttpItem() { URL = url, Accept = "text/*", ContentType = contentType, Method = "POST", PostDataType = PostDataType.Byte, Timeout = 1000000, ReadWriteTimeout = 3000000, PostdataByte = form.GetFormData().ToArray(), Encoding = Encoding.UTF8, }; item.Header.Add("Pragma", "no-cache"); item.Header.Add("DNT", "1"); HttpResult result = help.GetHtml(item); string html = result.Html; return html; } catch (Exception ex) { throw; } } /// <summary> /// 抓取网络图片保存到本地 /// </summary> /// <returns>本地路径</returns> private string GetPicUrl() { //string sPath = @"Data\Img\"; //if (!Directory.Exists(sPath)) //{ // Directory.CreateDirectory(sPath); //} Bitmap img = null; HttpWebRequest req; HttpWebResponse res = null; try { System.Uri httpUrl = new System.Uri(this.cameraFile); req = (HttpWebRequest)(WebRequest.Create(httpUrl)); req.Timeout = 180000; //设置超时值10秒 //req.UserAgent = "XXXXX"; //req.Accept = "XXXXXX"; req.Method = "GET"; res = (HttpWebResponse)(req.GetResponse()); img = new Bitmap(res.GetResponseStream());//获取图片流 img.Save(this.sPath + DateTime.Now.ToFileTime().ToString() + ".jpg");//随机名 } catch (Exception ex) { string aa = ex.Message; } finally { res.Close(); } return sPath; } private void button1_Click(object sender, EventArgs e) { this.falg = true; // ImageMessage(); CreateUpdata(); } private void ImageFile() { this.sPath = @"Data\Img\"; if (!Directory.Exists(this.sPath)) { Directory.CreateDirectory(this.sPath); } } private void ResultCameraFile(string cameraid) { string sql = "select cameralPictureUrl from camera_manager where Id='" + cameraid + "'AND cameralState='0'"; this.cameraFile = "http://192.168.0.37:81/snapshot.cgi?user=admin&pwd="; } private void button2_Click(object sender, EventArgs e) { this.Close(); } }