引言
做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" οnchange="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>
它会加载后,就可以随意的进行操作了,这个函数可以加载多个文件。
总结
我们看到一些东西总觉得是新的东西,但本质其实就是咱们之前学过的东西,我们就是要在用完了这些“新的”东西之后,重新整理和总结,变成我们知识网中已有的知识的补充,学习就会很轻松。