公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

WinForm 自動(dòng)更新程序(四)

admin
2023年2月27日 10:20 本文熱度 1125

更新都寫(xiě)完了,但是要更新文件要怎么操作呢?連接服務(wù)器然后上傳上去,修改下xml的版本號(hào)當(dāng)然也是可以的,但是還是沒(méi)有寫(xiě)個(gè)程序使用起來(lái)方便,所以這一篇就寫(xiě)一個(gè)簡(jiǎn)單的上傳程序。后臺(tái)依然是使用的.net core webapi,然后新建個(gè)控制器來(lái)接收上傳來(lái)的文件。前臺(tái)就直接使用layui隨便搭個(gè)上傳表單。

開(kāi)發(fā)環(huán)境:.NET Core 3.1

開(kāi)發(fā)工具:Visual Studio 2019

實(shí)現(xiàn)代碼:

//控制器代碼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("沒(méi)有文件"); }
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"></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>

實(shí)現(xiàn)效果:


代碼解析:文件上傳完之后,若xml文件中已經(jīng)存在該文件名稱,則進(jìn)行版本+0.01,否則新加一條節(jié)點(diǎn)信息,默認(rèn)版本號(hào)為1.00。然后這里由于要操作文件,所以又加了個(gè)鎖來(lái)防止占用(總覺(jué)得這個(gè)方式不太合適),主要是因?yàn)閘ayui的多文件上傳是循環(huán)調(diào)接口實(shí)現(xiàn)的,感覺(jué)不太好,建議使用其他框架或者對(duì)js代碼進(jìn)行更改。


該文章在 2023/2/27 10:20:33 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 91久久久久精品无嫩草影院 | 成人免费av一区二区三区 | 岛国毛片一级一 | 国产91丝袜在线播放动漫蜜月 | 国产不卡福利一二三区 | 国产超碰97久久人人操人人操 | 成人做色视频在 | 91久久久久精品无嫩草影院 | 成人午夜福利电影天堂 | 国产韩日欧美在线 | 国产a级特黄的片子 | 国产精品丝袜肉丝 | 18禁裸体动漫美女无遮挡网 | 国产毛片无码专区 | 高潮视频一区在线观看 | 国产直播在线观看免费 | av一区二区在线播放 | 国产高清在线a视频大全 | 国产精品无码一区二区牛牛 | 国产真人无码作爱免费视频 | 国产色欲av一区二区三区 | 不卡国产手机版毛片 | 国产日韩精品无码去免费专区国产 | 国产品精品无码视av | 精品国产91久久久久久黄无码 | 国产精品制服丝袜亚洲欧美 | 91极品尤物18禁国产在线播放 | 国自产拍高清精品 | 国产午夜激无码v毛片久久 国产午夜激无码αv毛片久久 | 国产丝袜也不甘示弱! | 动精品动漫专区3d在线看 | 国产欧美日韩中文久久 | 顶级丰满少妇自慰到喷水 | 国产毛片毛片精品天天看 | 国产精品成人麻烦视频 | 国产成人精品综合久久久久 | 国产精品视频一区二区 | 国产精品三p一区 | 国产精品黄在线观看免费网站 | 国产观看精品一区二区三区 | 精品久久全免费的听书软件 |