首页 > 其他分享 >OnlyOffice文件回调接口net core 版本

OnlyOffice文件回调接口net core 版本

时间:2023-07-04 09:22:05浏览次数:43  
标签:body core string fileData var net OnlyOffice model isSucceed


public class OfficeFilesController : BaseController//Controller
{


/// <summary> /// 保存OnlyOffice文件 /// </summary> [HttpPost] public void SaveOnlyOfficeFile() { var fileDataJson = string.Empty; var method = "SaveOnlyOfficeFile"; bool isSucceed = false; string search1 = string.Empty; string search2 = string.Empty; string status = string.Empty; var ip = CommonHelpLD.ServiceIp; var model = new OnlyOfficeFile(); string body = string.Empty; try { using (var reader = new StreamReader(HttpContext.Request.Body)) { body = reader.ReadToEndAsync().Result; } if (!string.IsNullOrEmpty(body)) { var endIndex = body.IndexOf("fileDataJson");//, fileDataJson: if (endIndex > 0) { body = body.Substring(0, endIndex - 15); body = body.Trim().TrimEnd(','); } var fileData = JsonConvert.DeserializeObject<CallbackApiReqModel>(body); if (fileData != null && (fileData.status == 2 || fileData.status == 6)) { status = fileData.status.ToString(); try { if (fileData.key.Contains("_")) { var keys = fileData.key.Split('_'); if (keys.Length >= 3) { fileData.Id = string.Format("{0}_{1}", keys[0], keys[1]); } else { fileData.Id = keys[1]; } } else { fileData.Id = fileData.key; } var fileModel = OnlyOfficeFileHelper.GetFileObjModel(fileData.key);//(fileData.Id); var sFilePath = OnlyOfficeFileHelper.GetFilePath(fileModel.FileType); string sFileName = string.Format("{0}.docx", fileModel.Key); var PATH_FOR_SAVE = sFilePath + "/" + sFileName; //文件的绝对路径 search1 = fileModel.Key; search2 = fileData.key; model.FileKey = fileData.key; model.Type = fileModel.FileType; model.Name = sFileName; model.DisplayName = sFileName; model.TaskId = search1; model.CreatedBy = "CallbackApi"; model.VersionNo = 1; var model_o = _serviceOnlyOfficeFile.GetModelByTaskId(model.TaskId, model.Type); if (model_o != null) { model.VersionNo = model_o.VersionNo + 1; } var req = WebRequest.Create(fileData.url); using (var stream = req.GetResponse().GetResponseStream()) { using (var fs = System.IO.File.Open(PATH_FOR_SAVE, FileMode.Create)) { var buffer = new byte[4096]; int readed; while ((readed = stream.Read(buffer, 0, 4096)) != 0) { fs.Write(buffer, 0, readed); } } } isSucceed = true; model.FilePath = PATH_FOR_SAVE.Replace(AppDomain.CurrentDomain.BaseDirectory, string.Empty); } catch (Exception ex) { isSucceed = false; } } else { isSucceed = true; } fileDataJson = JsonConvert.SerializeObject(fileData); } else { isSucceed = true; } } catch (Exception ex) { isSucceed = false; } var rspJosn = "{\"error\":0}";//返回保存成功 if (isSucceed) { _serviceOnlyOfficeFile.SaveModel(model); } else { rspJosn = "{\"error\":1}";//返回保存失败 } _serviceCommonLog.AddLog(_className, method, "回调接口", body, rspJosn, "status:" + status, ip, search1, search2); Response.WriteAsync(rspJosn); }
}

 

标签:body,core,string,fileData,var,net,OnlyOffice,model,isSucceed
From: https://www.cnblogs.com/stevenchen2016/p/17524781.html

相关文章

  • ASP.NET Core 6框架揭秘实例演示[41]:跨域资源的共享(CORS)N种用法
    同源策略是所有浏览器都必须遵循的一项安全原则,它的存在决定了浏览器在默认情况下无法对跨域请求的资源做进一步处理。为了实现跨域资源的共享,W3C制定了CORS规范。ASP.NET利用CorsMiddleware中间件提供了针对CORS规范的实现。(本文提供的示例演示已经同步到《ASP.NETCore6框架揭......
  • ubuntu下新安装的qtcreator无法打开?编译好的qt程序缺少qtcore库文件?
    ubuntu下新安装的qtcreator无法打开?编译好的qt程序缺少qtcore库文件?试试添加qt和qtcreator到环境变量。sudovi/etc/profile新增exportQTDIR=你的qt根目录exportPATH=$QTDIR/bin:$PATHexportLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATHexportQTCREATOR=你的qtcret......
  • .net core 自定义配置文件
    publicvoidConfigureServices(IServiceCollectionservices){varconfigBuilder=newConfigurationBuilder().SetBasePath(Path.Combine(Directory.GetCurrentDirectory(),"Config")).AddJsonFile(&q......
  • 让IIS支持.NET Web Api PUT和DELETE请求
    前言    有很长一段时间没有使用过IIS来托管应用了,今天用IIS来托管一个比较老的.NETFx4.6的项目。发布到线上后居然一直调用不同本地却一直是正常的,关键是POST和GET请求都是正常的,只有PUT和DELETE请求是有问题的。经过一番思考忽然想起来了IIS默认情况下拒绝处理PUT和DELETE......
  • Vue-CoreVideoPlayer 视频播放器组件
    安装cnpminstall-Svue-core-video-player快速使用#在main.js中importVueCoreVideoPlayerfrom'vue-core-video-player'Vue.use(VueCoreVideoPlayer)#默认是英文的'''做国际化'''importVueCoreVideoPlayerfrom'vue-core-video......
  • dotnet\shared vs dotnet\packs\ref\ reference assembly vs runtime assembly
    dotnet\sharedvsdotnet\packs\ref\C:\ProgramFiles\dotnet\shared\Microsoft.AspNetCore.App\6.0.16\Microsoft.AspNetCore.Identity.dllC:\ProgramFiles\dotnet\packs\Microsoft.AspNetCore.App.Ref\6.0.16\ref\net6.0\Microsoft.AspNetCore.Identity......
  • .NET RulesEngine(规则引擎)
    ulesEngine是微软推出的规则引擎,规则引擎在很多企业开发中有所应用,是处理经常变动需求的一种优雅的方法。个人任务,规则引擎适用于以下的一些场景:输入输出类型数量比较固定,但是执行逻辑经常变化;switch条件经常变化,复杂switch语句的替代;会变动的,具有多种条件或......
  • 使用 Benchmark.NET 测试代码性能
    今天,我们将研究如何使用Benchmark.Net来测试代码性能。借助基准测试,我们可以创建基准来验证所做的更改是否按预期工作并且不会导致性能下降。并非每个项目都需要进行基准测试,但是如果您正在开发的是NuGet程序包或通用dll,则很有意义。 今天,我们将研究如何......
  • 如何发布符合 .NET 准则的事件
    下面的过程演示了如何将遵循标准.NET模式的事件添加到类和结构中。.NET类库中的所有事件均基于 EventHandler 委托,定义如下:publicdelegatevoidEventHandler(objectsender,EventArgse);尽管定义的类中的事件可基于任何有效委托类型,甚至是返回值的委托,但一般还是建议使用......
  • 记一次.net加密神器 Eazfuscator.NET 2023.2 最新版 使用尝试
    合集-.net代码混淆加密产权保护(2) 1.记一次.net加密神器Eazfuscator.NET2023.2最新版使用尝试06-272.将SmartAssembly与单文件可执行文件一起使用(.NETCore6)06-27收起 很多人看到这个Eazfuscator.NET还不知是什么东东。。。首先介绍下。什么是Eazfu......