/// <summary> /// Executes the specified param. /// </summary> /// <param name="param">The param.</param> /// <param name="result">The result.</param> /// <returns></returns> public OpResult Execute(string param) { OpResult opResult = new OpResult(); try { Match match = m_regex.Match(param); if (match.Success) { string imagefile = match.Groups["imagepath"].Value.Replace("/", "\\"); // get latest image file from directory, notation example: @"c:\temp\test*.jpg" if (imagefile.Contains("*")) { imagefile = GetFileInfo.GetNewestImage(imagefile); } opResult.AppendFormat("response={0}", AddInHost.Current.MediaCenterEnvironment.DialogNotification( match.Groups["message"].Value, new System.Collections.ArrayList(1), int.Parse(match.Groups["timeout"].Value), "file://" + imagefile ).ToString()); opResult.StatusCode = OpStatusCode.Ok; } } catch (Exception ex) { opResult.StatusCode = OpStatusCode.Exception; opResult.StatusText = ex.Message; } return(opResult); }
private async Task <string> GetFileContentBase64Async() { await using var stream = GetFileInfo.CreateReadStream(); await using var writer = new MemoryStream(); await stream.CopyToAsync(writer); var offset = writer.Seek(0, SeekOrigin.Begin); return(Convert.ToBase64String(writer.ToArray())); }
public async Task <HttpResponseMessage> UploadFile() { if (!Request.Content.IsMimeMultipartContent()) { Request.CreateResponse(HttpStatusCode.UnsupportedMediaType); } var provider = GetMultipartMemoryStreamProvider(); var tt = await Request.Content.ReadAsMultipartAsync(provider).ContinueWith(p => { var result = p.Result; // var myParameter = result.FormData.GetValues("myParameter").FirstOrDefault(); var file = _fileService.Create(); foreach (var stream in result.Contents.Where((content, idx) => result.IsStream(idx))) { string fileName = GetFileInfo.GetDeserializedFileName(stream); var contentType = GetFileInfo.GetContentType(stream); if (_fileService.IsValidType(fileName) && _fileService.IsValidContent(contentType.MediaType)) { file.FileBinary = stream.ReadAsByteArrayAsync().Result; file.Size = stream.Headers.ContentLength; file.IsDeleted = false; file.Extention = contentType.MediaType; file.Guid = Guid.NewGuid(); file.Name = fileName; file.UploadDate = DateTime.UtcNow; // var file = new this.GetFormData<string >(stream.Headers.ContentDisposition.FileName); // var contentTest = stream.ReadAsByteArrayAsync(); // ... and so on, as per your original code. _fileService.Add(file); _unitOfWork.SaveChanges(); } } return(file); }); /*var result = await Request.Content.ReadAsMultipartAsync(provider); * * * // On upload, files are given a generic name like "BodyPart_26d6abe1-3ae1-416a-9429-b35f15e6e5d5" * // so this is how you can get the original file name * * var originalFileName = GetDeserializedFileName(result.FileData.First()); * * // uploadedFileInfo object will give you some additional stuff like file length, * // creation time, directory name, a few filesystem methods etc.. * * var uploadedFileInfo = new FileInfo(result.FileData.First().LocalFileName); * * // Remove this line as well as GetFormData method if you're not * // sending any form data with your upload request * * var fileUploadObj = GetFormData<UploadDataModel>(result); * * // Through the request response you can return an object to the Angular controller * // You will be able to access this in the .success callback through its data attribute * // If you want to send something to the .error callback, use the HttpStatusCode.BadRequest instead * * var returnData = "ReturnTest"; * * */ return(this.Request.CreateResponse(HttpStatusCode.OK, new { id = tt.Id })); }
/// <summary> /// Executes the specified param. /// </summary> /// <param name="param">The param.</param> /// <param name="result">The result.</param> /// <returns></returns> public OpResult Execute(string param) { OpResult opResult = new OpResult(); try { Match match = m_regex.Match(param); System.Collections.ArrayList buttonArray = new System.Collections.ArrayList(); System.Collections.Hashtable buttonHT = new System.Collections.Hashtable(); int customButtonID = 100; if (match.Groups["buttoncodes"].Value.Length > 0) { string[] buttons = match.Groups["buttoncodes"].Value.Split(';'); foreach (string button in buttons) { switch (button) { case "OK": buttonArray.Add(1); break; case "Cancel": buttonArray.Add(2); break; case "Yes": buttonArray.Add(4); break; case "No": buttonArray.Add(8); break; default: buttonArray.Add(button); buttonHT.Add(customButtonID.ToString(), button); customButtonID++; break; } } } if (match.Success) { responseReceived = false; dlg = new DialogClosedCallback(On_DialogResult); string imagefile = match.Groups["imagepath"].Value.Replace("/", "\\"); // get latest image file from directory, notation example: @"c:\temp\test*.jpg" if (imagefile.Contains("*")) { imagefile = GetFileInfo.GetNewestImage(imagefile); } AddInHost.Current.MediaCenterEnvironment.Dialog( match.Groups["message"].Value , match.Groups["caption"].Value , buttonArray , int.Parse(match.Groups["timeout"].Value) , match.Groups["modal"].Value == "modal" ? true:false , "file://" + imagefile , dlg); //wait for a response while (!responseReceived) { System.Threading.Thread.Sleep(100); } string btnResult = ""; switch (m_dlgResult.ToString()) { case "100": case "101": case "102": btnResult = (string)buttonHT[m_dlgResult.ToString()]; break; default: btnResult = m_dlgResult.ToString(); break; } opResult.AppendFormat("response={0}", btnResult); opResult.StatusCode = OpStatusCode.Success; } } catch (Exception ex) { opResult.StatusCode = OpStatusCode.Exception; opResult.StatusText = ex.Message; } return(opResult); }
/// <summary> /// 如果是多包数据,那么分包后放到list中 /// 1、当需要组包时,传入参数,分析、使用switch区分,组装不同的帧 /// 2、类型和子类型的方法分别用于区分和组装数据域外数据 /// 3、针对不同的功能组织不同的数据域,最后合并 /// 4、ref donewrite参数为写文件准备,返回本次组包本地读取的字节数 /// </summary> /// <param name="destid"></param> /// <param name="msgtype"></param> /// <param name="msgsubtype"></param> /// <returns>错误代码另外给出</returns> public static PacketRet Packetization(Compare example, object data) { byte[] frame = null; PacketRet tempret = new PacketRet(); //packetization的错误代码定义另外给出 tempret.errorcode = 0; switch (example.msgType) { //读操作单元 case (byte)MSGEncoding.MsgType.ReadUnit: { switch (example.msgSubType) { //读数据 case (byte)MSGEncoding.ReadUint.ReadData: { frame = ReadUnit.ReadData(example.destID, (ushort[])data); break; } //读取配置信息 case (byte)MSGEncoding.ReadUint.Readcfg: { frame = ReadUnit.Readcfg(example.destID, (ushort[])data); break; } //查询设备状态 case (byte)MSGEncoding.ReadUint.GetDevStatus: { frame = ReadUnit.GetDevStatus(example.destID, (ushort[])data); break; } default: { //MessageBox.Show("preparedata-packetzation:错误子代码!"); tempret.errorcode = 1; } break; } break; } //写操作单元 case (byte)MSGEncoding.MsgType.WriteUnit: { //为适应前台,测试其他成功后添加转换 Dictionary <ushort, object> data_temp = WriteUnit.TransDict(((Dictionary <string, object>)data)); switch (example.msgSubType) { //控制设备(应该是状态/控制量) case (byte)MSGEncoding.WriteUint.ControlDev: { frame = WriteUnit.ControlDev(example.destID, data_temp); break; } //设置配置信息(配置量) case (byte)MSGEncoding.WriteUint.Setcfg: { frame = WriteUnit.Setcfg(example.destID, data_temp); break; } //写数据(数据量) case (byte)MSGEncoding.WriteUint.WriteData: { frame = WriteUnit.WriteData(example.destID, data_temp); break; } default: { //MessageBox.Show("preparedata-packetzation:错误子代码!"); tempret.errorcode = 1; } break; } break; } //读文件 case (byte)MSGEncoding.MsgType.ReadFile: { switch (example.msgSubType) { //读取指定配置文件,从x位置开始的n个字节数据 case (byte)MSGEncoding.ReadFile.ReadcfgFile: { frame = ReadFile.ReadcfgFile(example.destID, (ReadFile.Parameter)data); break; } //读取指定数据文件,从x位置开始的n个字节数据 case (byte)MSGEncoding.ReadFile.ReadDataFile: { frame = ReadFile.ReadDataFile(example.destID, (ReadFile.Parameter)data); break; } default: { //MessageBox.Show("preparedata-packetzation:错误子代码!"); tempret.errorcode = 1; } break; } break; } //写文件到设备 //注意:传入的para中的filehandle已经初始化 case (byte)MSGEncoding.MsgType.WriteFile: { switch (example.msgSubType) { //上传配置文件到设备,并作为最新配置 case (byte)MSGEncoding.WriteFile.UpcfgToDev: { frame = WriteFile.UpcfgToDev(example.destID, (WriteFile.Parameter)data); break; } //上传数据文件到设备 case (byte)MSGEncoding.WriteFile.UpDataToDev: { frame = WriteFile.UpDataToDev(example.destID, (WriteFile.Parameter)data); break; } //上传升级文件 case (byte)MSGEncoding.WriteFile.UpGradeFile: { frame = WriteFile.UpGradeFile(example.destID, (WriteFile.Parameter)data); break; } default: { //MessageBox.Show("preparedata-packetzation:错误子代码!"); tempret.errorcode = 1; } break; } break; } //通信测试 case (byte)MSGEncoding.MsgType.LoopBack: { //LoopBack通讯测试用 frame = LoopBack.LoopTest(example.destID, (ushort)data); break; } //其他(向设备查询Error Code的详细解释) case (byte)MSGEncoding.MsgType.GetErrorInfo: { //向设备查询Error Code的详细解释 frame = GetErrorInfo.ExplainError(example.destID, (ushort)data); break; } //文件信息查询 case (byte)MSGEncoding.MsgType.GetFileInfo: { switch (example.msgSubType) { //取得配置文件名称(=最新更新时间)及文件大小 case (byte)MSGEncoding.GetFileInfo.GetcfgFile: { frame = GetFileInfo.GetcfgFile(example.destID, (GetFileInfo.Parameter)data); break; } //按日期范围查询数据文件名及文件大小 case (byte)MSGEncoding.GetFileInfo.GetFileByRange: { frame = GetFileInfo.GetFileByRange(example.destID, (GetFileInfo.Parameter)data); break; } //查询离指定日期最近的x个数据文件名及文件大小 case (byte)MSGEncoding.GetFileInfo.GetXFileByLately: { frame = GetFileInfo.GetXFileByLately(example.destID, (GetFileInfo.Parameter)data); break; } default: { //MessageBox.Show("preparedata-packetzation:错误子代码!"); tempret.errorcode = 1; } break; } break; } //读缓冲区 case (byte)MSGEncoding.MsgType.ReadBuffer: { switch (example.msgSubType) { //读CO2气体的采样缓存 case (byte)MSGEncoding.ReadBuffer.ReadCO2Cache: { frame = ReadBuffer.ReadCO2Cache(example.destID, (ReadBuffer.Parameter)data); break; } //读六种气体的采样缓存 case (byte)MSGEncoding.ReadBuffer.ReadGasCache: { frame = ReadBuffer.ReadGasCache(example.destID, (ReadBuffer.Parameter)data); break; } //读H2O采样数据缓存 case (byte)MSGEncoding.ReadBuffer.ReadH2OCache: { frame = ReadBuffer.ReadH2OCache(example.destID, (ReadBuffer.Parameter)data); break; } default: { //MessageBox.Show("preparedata-packetzation:错误子代码!"); tempret.errorcode = 1; } break; } break; } default: { //MessageBox.Show("preparedata-packetzation:数据帧外层类型存在错误!"); tempret.errorcode = 2; } break; } try { //为统一发送和接受帧的对照,添加的标志,这里稳定后挪进所有帧组装方法中 byte[] changeframe = new byte[frame.Length + 1]; Array.Copy(frame, 0, changeframe, 0, 8); changeframe[8] = packetindex; Array.Copy(frame, 8, changeframe, 9, frame.Length - 8); tempret.packetnum = packetindex; tempret.packetdata = frame; //通过自动溢出归零 packetindex++; } catch (Exception ep) { //组好的原始帧中插入帧编码存在错误! //MessageBox.Show("preparedata-packetization:"+ep.ToString()); tempret.errorcode = 3; } return(tempret); }