引言
做UI的时候,有一个上传Dll文件的功能,这个功能,之前在2.0的时候,只在特定的目录下进行上唇,而3.0要实现的是在任何的地方都可以上传文件,这个时候,我们就需要用到MVC如何上传文件。
实现
1、思路:
一开始我们在网上查到的一些信息,大多是千篇一律的,都是选择文件之后上传,上传用到的东西都是MVC封装好了,还有一部分是EasyUI封装好了的。我们就用现成的就行了。
2、原理:
原理一直以为是一种新的东西,实际上没有什么新的东西,就是IO的东西,上唇的文件给一个特定的文件名称(GUID)和文件的路径,存储在本地的路径下,这个时候,我们就可以通过对本地存储的这个文件读取出来进行操作,跟就是一个IO流。
3、实现代码:
在主页面下index.aspx页面中:
<span style="font-size:18px;"> @using (Html.BeginForm("Upload", "NonQueryProperties", FormMethod.Post, new { enctype = "multipart/form-data" })) { <div id="upload" style="width: 400px; display: inline; margin: 5px 5px;"> <input class="easyui-linkbutton" name="files" id="files" type="file" multiple="multiple" onchange="fileSelected()" /> <label id="lbError">@ViewBag.ErrorMessage</label> <input class="easyui-linkbutton" type="submit" name="submit" value="上传" /> </div> } </span>
有个地方一定要注意的是,这是一个form表单,进行提交的时候,用的是Submit。
在NonQueryPropertiesController中的Upload方法中写入函数:
<span style="font-size:18px;"> #region Upload(HttpPostedFileBase[] fileToUpload) 上传文件 UI系统-邱慕夏-2014-12-23 [HttpPost] public void Upload(IEnumerable files) { if (files == null) { //ViewBag.ErrorMessage = "Please select a file!!"; return; } string filePath = string.Empty; Guid gid = Guid.NewGuid(); foreach (HttpPostedFileBase file in files) { //加载到项目目录中的Uploads文件夹下,将文件名称为GUID的形式保存 filePath = Path.Combine(HttpContext.Server.MapPath("/Uploads/"), gid.ToString() + Path.GetExtension(file.FileName)); file.SaveAs(filePath); } //根据路径查找地址之后,进行操作 LoadEntityDll(filePath); } #endregion</span>
它会加载后,就可以随意的进行操作了,这个函数可以加载多个文件。
总结
我们看到一些东西总觉得是新的东西,但本质其实就是咱们之前学过的东西,我们就是要在用完了这些“新的”东西之后,重新整理和总结,变成我们知识网中已有的知识的补充,学习就会很轻松。
时间: 2024-10-16 18:25:40