<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
更新都寫完了,但是要更新檔案要怎麼操作呢?連線伺服器然後上傳上去,修改下xml的版本號當然也是可以的,但是還是沒有寫個程式使用起來方便,所以這一篇就寫一個簡單的上傳程式。後臺依然是使用的.net core webapi,然後新建個控制器來接收上傳來的檔案。前臺就直接使用layui隨便搭個上傳表單。
.NET Core 3.1
Visual Studio 2019
//控制器程式碼 namespace AutoUpdate.WebApi.Controllers { [Route("api/[controller]")] [ApiController] public class UploadController : ControllerBase { private static object obj = new object(); [HttpPost] public JsonResult Upload() { IFormFileCollection formFile = Request.Form.Files; if(formFile.Count == 0) { throw new Exception("沒有檔案"); } ReturnResult result = new ReturnResult(Result.success); string path = AppContext.BaseDirectory + "files\"; string xmlPath = AppContext.BaseDirectory + "UpdateList.xml"; try { foreach(var file in formFile) { string fileName = path + file.FileName; using FileStream fileStream = System.IO.File.Create(fileName); file.CopyTo(fileStream); fileStream.Flush(); } List<string> UpdateFiles = formFile.Select(s => s.FileName).ToList(); UpdateXml(UpdateFiles); } catch(Exception ex) { result.result = Result.error; result.msg = ex.Message; } return new JsonResult(result); } private void UpdateXml(List<string> UpdateFiles) { lock(obj) { string xmlPath = AppContext.BaseDirectory + "UpdateList.xml"; XDocument xdoc = XDocument.Load(xmlPath); foreach(string file in UpdateFiles) { var ele_files = xdoc.Root.Element("files"); XElement xele = ele_files.Elements().FirstOrDefault(s => s.Attribute("name").Value == file); if(xele != null) { string oldVer = xele.Attribute("version").Value; xele.SetAttributeValue("version", Math.Round(decimal.Parse(oldVer) + (decimal)0.01, 2)); } else { XElement addXele = new XElement("file"); addXele.SetAttributeValue("name", file); addXele.SetAttributeValue("version", "1.00"); ele_files.Add(addXele); } } xdoc.Save(xmlPath); } } } }
//html程式碼 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>檔案更新</title> <link rel="stylesheet" href="./layui/css/layui.css" rel="external nofollow" > </head> <body> <div class="layui-form-item" style="margin:15%"> <div class="layui-col-md10 layui-col-xs9 layui-form-item-mt5"> <label class="layui-form-label">檔案上傳</label> <div class="layui-input-block"> <input type="text" id="filename" name="filename" class="layui-input" readonly /> </div> </div> <div class="layui-col-md2 layui-col-xs1 layui-form-item-mt5"> <button class="layui-btn" id="btnBrowse">瀏覽</button> <button class="layui-btn" id="submit" lay-filter="submit" lay-submit>上傳</button> </div> </div> <script src="./layui/layui.js"></script> <script> var layer = layui.layer, form = layui.form, $ = layui.jquery, upload = layui.upload; form.render(); upload.render({ elem: '#btnBrowse' , url: 'http://localhost:5000/api/Upload' , headers: {} , data: {} , accept: 'file' , multiple: true , auto: false , bindAction: '#submit' , choose: function (obj) { $("#filename").val(""); obj.preview(function (index, file, result) { $("#filename").val($("#filename").val() + file.name + " ; "); }) } , done: function (res, index, upload) { layer.closeAll('loading'); layer.msg(res.msg); }, error: function (res) { layer.closeAll('loading'); } }) </script> </body> </html>
程式碼解析:
檔案上傳完之後,若xml檔案中已經存在該檔名稱,則進行版本+0.01,否則新加一條節點資訊,預設版本號為1.00。然後這裡由於要操作檔案,所以又加了個鎖來防止佔用(總覺得這個方式不太合適),主要是因為layui的多檔案上傳是迴圈調介面實現的,感覺不太好,建議使用其他框架或者對js程式碼進行更改。
到此這篇關於C# WinForm自動更新程式之檔案上傳操作詳解的文章就介紹到這了,更多相關C# WinForm自動更新程式內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45