<div class="col-xs-12 mcp-list-item" style="margin-top:20px">
<div class="mcp-list-item-title">附件</div>
<input onchange="upload()" id="uploadFile" name="uploadFile" placeholder="多个请按下Ctrl后选取文件" type="file" value="文件选取" multiple="multiple">
</div>
<div class="col-xs-12 mcp-list-item">
<a class="btn btn-success" onclick="btn_upload()"><i class="fa fa-upload"></i>开始上传</a>
</div> //下面这一段代码是用来显示图片容器的
  <div id="imgList">
<img id="fileUrl" style="width: 100px; height: 100px; border-radius: 100px;" />
</div> <div id="fileList"> </div>
 
        //图片上传
function upload() { var f1 = document.getElementById('uploadFile').files;
if (f1.length>0) {
var form = $('#imgList');
for (var i = 0; i < f1.length; i++) { var src1 = window.URL.createObjectURL(f1[i]);
var imgid='fileUrl_'+i;
var oldElement = $('#fileUrl');
var newElement = $(oldElement).clone();
$(oldElement).attr('id', imgid);
$(oldElement).before(newElement);
$(oldElement).appendTo(form);
$(oldElement).attr('src', src1);
// $('#' + imgid).src = src1
}
} //var f = document.getElementById('uploadFile').files[0]; //var src = window.URL.createObjectURL(f);
//var filetype = "GIF,JPEG,JPG,PNG,pdf";
//document.getElementById('fileUrl').src = src; //if (f == null || f == "") {
// dialogMsg('请选择文件!', 0);
// return;
//} else if (f != "" && f != undefined && f != null) {
// var imgtype = ff.toLowerCase().split('.');
// if (filetype.indexOf(imgtype[1].toUpperCase()) == -1) {
// dialogMsg('图片类型必须是.gif,jpeg,jpg,png,pdf中的一种!', 0);
// return;
// }
//} }
function btn_upload() { var refids = [];
var rows = $('#Delivery_Grid').datagrid('getRows');
$.each(rows, function (index, item) {
refids.push(item.reforderid); }); var numArr = [];
var txt = $("#fileList").find("input:file"); //获取所有上传附件框
for (var i = 0; i < txt.length; i++) {
numArr.push(txt.eq(i).attr('id')); //将附件框的ID添加到数组中
} if (!$('#formState').Validform()) {
return false;
}
var postData = $("#formState").GetWebControls(); $.ajaxFileUpload({
url: "/TMS.Service/ServiceMilestone/UploadFile?reforderid=" + refids.join(','),
secureuri: false,
fileElementId: 'uploadFile',
dataType: 'json',
//data: postData,
success: function (data) {
if (data.status) {
dialogMsg(data.message, 1); document.getElementById('fileUrl').src = "";
document.getElementById('uploadFile').src = ""; } else {
dialogMsg(data.msg, 0);
}
}
}); }

记得引入   <script src="~/Content/scripts/uploadify/ajaxfileupload.js"></script>

后台代码:

  [HttpPost]
public ActionResult UploadFile(MilestoneInfo minfo)
{ try
{ var filelist = new List<Cargo.Entity.FileInfoEntity>();
if (minfo == null)
{
throw new Exception("找不到milestone节点所属的业务信息 ");
} if (Request != null && Request.Files != null && Request.Files.Count > )
{
string FileServerUrl = ConfigurationManager.AppSettings["FileServerUrl"].ToString();
string serverBasePath = AppDomain.CurrentDomain.BaseDirectory + @"Upload\temp\";
DirectoryInfo dir = new DirectoryInfo(serverBasePath);
if (!dir.Exists)
{
dir.Create();
}
foreach (string fileStr in Request.Files)
{
HttpPostedFileBase file = Request.Files[fileStr] as HttpPostedFileBase;
if (file != null && file.ContentLength > )
{
string filename = Path.GetFileName(file.FileName);
string savePath = serverBasePath + @"\" + filename;
var fileExtName = Path.GetExtension(savePath);
file.SaveAs(savePath);
string uploadDate = DateTime.Now.ToString("yyyyMMdd");
string address = FileServerUrl + $"Home/UploadFile?module={TMS_Enum.TMS_SysFileInfoEnum.TMS_module.ToString()}&folderId={TMS_Enum.TMS_SysFileInfoEnum.TMS_folderId.ToString()}&uploadDate=" + uploadDate;
var buffer = new WebClient().UploadFile(address, "post", savePath);
string result = Encoding.UTF8.GetString(buffer); var serverFilePath = FileServerUrl + result.Replace("~/", ""); //最终服务器存储的地址
//判断文件是不是存在 清空临时存储的文件
if (System.IO.File.Exists(savePath))
{
//如果存在则删除
System.IO.File.Delete(savePath);
}
filelist.Add(new Cargo.Entity.FileInfoEntity
{
FileExtensions = fileExtName,
FilePath = serverFilePath,
FileName = filename, });
}
} } //这里为了避免上传文件事务长时间锁死,所以放置到这里进行操作,先上传耗时的文件操作,再考虑操作数据库
SaveMilestone(
minfo,
filelist);
return new ResponseModel { status = true, msg = "提交成功!" }; }
catch (Exception ex)
{ return new ResponseModel { status = false, msg = ex.Message };
} }


C# mvc 上传多个附件的更多相关文章

  1. Spring MVC上传文件

    Spring MVC上传文件 1.Web.xml中加入 <servlet> <servlet-name>springmvc</servlet-name> <s ...

  2. MVC上传文件

    ASP.NET MVC上传文件是必段撑握的知识.加强训练才是.以前Insus.NET曾使用第三方MyAjaxForm.js :http://www.cnblogs.com/insus/p/378548 ...

  3. Spring MVC 上传文件

    Spring MVC上传文件需要如下步骤: 1.前台页面,form属性 method设置为post,enctype="multipart/form-data"  input的typ ...

  4. MVC:上传文件

    今天写了一个使用MVC上传的DEMO,很简单不超过10行代码.代码如下(关注重点,所以尽量精简掉其他代码): 项目结构

  5. 解决spring mvc 上传报错,Field [] isn't an enum value,Failed to convert value of type 'java.lang.String[]' to required type '

    没有选择附件,但是点击上传按钮的时候会报错. 之前不选择文件,直接上传空文件是可以的,后来不知道改了什么就不行了. 错误信息: -- :: [http--] TRACE org.springframe ...

  6. asp.net mvc上传头像加剪裁功能

    原文:asp.net mvc上传头像加剪裁功能 正好项目用到上传+剪裁功能,发上来便于以后使用. 我不能告诉你们其实是从博客园扒的前台代码,哈哈. 前端是jquery+fineuploader+jqu ...

  7. mvc上传头像加剪裁功能

    asp.net mvc上传头像加剪裁功能 正好项目用到上传+剪裁功能,发上来便于以后使用. 我不能告诉你们其实是从博客园扒的前台代码,哈哈. 前端是jquery+fineuploader+jquery ...

  8. ASP.NET Core MVC上传、导入、导出知多少

    前言 本君已成夜猫子,本节我们来讲讲ASP.NET Core MVC中的上传,这两天才研究批量导入功能,本节顺便简单搞搞导入.导出,等博主弄妥当了再来和大家一并分享. .NET Core MVC上传 ...

  9. .Net mvc 上传多文件

    .net mvc 上传多文件有很多种方式,我的方法只是其中一种, 仅供参考,我主要是注重参数传递的过程,后面文件保存的地方省略.. 调试环境 vs2017 控制器代码: [HttpPost] publ ...

随机推荐

  1. 浅谈linux的死锁检测 【转】

    转自:http://www.blog.chinaunix.net/uid-25942458-id-3823545.html 死锁:就是多个进程(≥2)因为争夺资源而相互等待的一种现象,若无外力推动,将 ...

  2. sicily 4699. 简单哈希

    Description 使用线性探测法(Linear Probing)可以解决哈希中的冲突问题,其基本思想是:设哈希函数为h(key) = d, 并且假定哈希的存储结构是循环数组, 则当冲突发生时,  ...

  3. python笔记_查看函数调用栈的一个小技巧

    一.背景 最近在看一个开源框架的源码,涉及到的内容非常杂乱,有的函数不知道是在什么时候被谁给调用了?调用的时候传入了什么参数?为了解决这个问题,写了一个小的装饰器. 二.实现 这个装饰器函数主要参考了 ...

  4. echo常用操作

    echo -n 不换行输出 [root@C ~]# echo -n "peter" ; echo "linux" peterlinux echo -e 输出转义 ...

  5. Java-贪心算法

    1. 什么是贪心算法? 贪心算法,又称贪婪算法(Greedy Algorithm),是指在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优解出发来考虑,它所做出的仅是在某种意义上的 ...

  6. 使用 Visual Studio 部署 .NET Core 应用

    可将 .NET Core 应用程序部署为依赖框架的部署或独立部署,前者包含应用程序二进制文件,但依赖目标系统上存在的 .NET Core,而后者同时包含应用程序和 .NET Core 二进制文件. 有 ...

  7. linux命令(34):less命令

    1.命令格式: less [参数]  文件 2.命令功能: less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会 ...

  8. [译]怎样用HTML5 Canvas制作一个简单的游戏

    这是我翻译自LostDecadeGames主页的一篇文章,原文地址:How To Make A Simple HTML5 Canvas Game. 下面是正文: 自从我制作了一些HTML5游戏(例如C ...

  9. redis之(九)redis的事务机制

    [一]什么是redis的事务 --->redis的事务是一组命令的集合. --->redis的事务是保证一组命令,要么都执行,要么都不执行.但不支持一组命令中,其中一个或多个执行失败,不支 ...

  10. 【转载】Python,使用Wheel打包

    转载自: http://blog.sina.com.cn/s/blog_1318255b00102wbtz.html Python的第一个主流打包格式是.egg文件,现在大家庭中又有了一个叫做Whee ...