using WX.CRM.BLL.Wx; using WX.CRM.Common; using WX.CRM.Model.Entity; using RiaService; using RiaServiceLibrary; using System; using System.Collections.Generic; using System.Collections.Specialized; using System.IO; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Activation; using System.ServiceModel.Web; using System.Text; using System.Threading; using System.Web; using WX.CRM.Model.Enum; namespace RiaService { [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] [JavascriptCallbackBehavior(UrlParameterName = "jsoncallback")] public class WeChatDbReceive : IWeChatDbReceive { public void Recive(Stream input) { try { string datatype = HttpContext.Current.Request["datatype"]; string body = new StreamReader(input).ReadToEnd(); //NameValueCollection nvc = HttpUtility.ParseQueryString(body); //var filename = nvc["filename"]; string newFileName = datatype + "-" + DateTime.Now.Ticks.ToString() + ".txt"; var dir = HttpContext.Current.Server.MapPath("/WeChatDbRecive/"); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } while (File.Exists(dir + newFileName)) { LogHelper.Info(dir + newFileName + "存在!"); Thread.Sleep(1); newFileName = datatype + "-" + DateTime.Now.Ticks.ToString() + ".txt"; } File.WriteAllText(dir + newFileName, body, Encoding.UTF8); WX_DBRECIVE db = new WX_DBRECIVE(); db.STATUS = 0; db.FILEPATH = dir + newFileName; db.DATATYPE = datatype; db.CTIME = DateTime.Now; IWX_DBRECIVE wxbll = new WX_DBRECIVE_BL(); var rst = wxbll.Create(db); if (rst) { HttpContext.Current.Response.Write(Utility.ConvertToJSON(new { result = 1, message = "接收成功" })); } else { HttpContext.Current.Response.Write(Utility.ConvertToJSON(new { result = 0, message = "接收失败,详情查看日志" })); } } catch (Exception ex) { LogHelper.Error(ex); HttpContext.Current.Response.Write(Utility.ConvertToJSON(new { result = 0, message = "接收失败:" + ex.Message })); } } public JsonResult Upload(Stream input) { try { string uploadFolder = System.AppDomain.CurrentDomain.BaseDirectory; string savaPath = "WeChatDbRecive"; //string dateString = DateTime.Now.ToShortDateString() + @"\"; string fileName = "ddd.mp4"; //Stream sourceStream = request.FileData; FileStream targetStream = null; if (!input.CanRead) { throw new Exception("数据流不可读!"); } uploadFolder = Path.Combine(uploadFolder, savaPath); //+ dateString; if (!Directory.Exists(uploadFolder)) { Directory.CreateDirectory(uploadFolder); } string filePath = Path.Combine(uploadFolder, fileName); using (targetStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None)) { //read from the input stream in 4K chunks //and save to output stream const int bufferLen = 4096; byte[] buffer = new byte[bufferLen]; int count = 0; while ((count = input.Read(buffer, 0, bufferLen)) > 0) { targetStream.Write(buffer, 0, count); } targetStream.Close(); input.Close(); } return new JsonResult {result = true, retcode = Convert.ToInt32(EnumInterfaceErrcode.调用成功), retmsg = "调用成功"}; } catch (Exception ex) { LogHelper.Error(ex); return new JsonResult {result = false, retcode = (int) EnumInterfaceErrcode.系统错误, retmsg = ex.ToString()}; } } public void test() { try { var pstr = "testparams"; var ret = Utility.PostData("http://localhost:18739/WeChatDbReceive.svc/Upload", pstr, Encoding.UTF8); HttpContext.Current.Response.Write(ret); } catch (Exception ex) { } //string path = @"C:\Users\Administrator\Desktop\22.jpg"; //System.Net.WebClient uploadWc = new System.Net.WebClient(); //uploadWc.Headers.Add("Content-Type", "image/jpeg"); //System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open); //byte[] buffer = new byte[(int)fs.Length]; //fs.Read(buffer, 0, (int)fs.Length); //fs.Close(); //uploadWc.UploadDataCompleted += UploadWc_UploadDataCompleted; //uploadWc.UploadData(new Uri("http://localhost:18739/WeChatDbReceive.svc/Upload"), buffer); } private void UploadWc_UploadDataCompleted(object sender, System.Net.UploadDataCompletedEventArgs e) { Console.WriteLine(e.Result); } } }