<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. 日常开发技巧:使用notify-send发送通知

    背景 在终端执行一些需要较长时间的命令时,会切换到别的界面.但为了知道是否执行完成,需要时不时地切换过去看一眼.很麻烦. 解决方式 为了减少这种麻烦,可以使用notify-send,发送桌面通知.no ...

  2. SD 模拟sip 读写子程序

    void simulate_spi_write_byte(u8 data){ u8 kk; SPI3_CS(0); SPI3_SCK(0); delay_us(1); //???spi???1/2us ...

  3. python基础===Number

    本文转自:python之Number 1.Python number数字 Python Number 数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将 ...

  4. 64_j1

    JSCookMenu-2.0.4-13.fc26.noarch.rpm 13-Feb-2017 22:06 38098 Java-WebSocket-1.3.1-0.2.git58d1778.fc24 ...

  5. 关于c++的string的operator =

    在 c++ primer 5 中在说到string的章节里面有这样一句话: string s5 = "hiya"; // copy initialization 也就是说,这里说上 ...

  6. C 实现有追求的线程池 探究

    引言 线程池很普通的老话题,讨论的很多.深入的不多,也就那些基础库中才能见到这种精妙完备的技巧.而本文随大流 想深入简述一种高效控制性强的一种线程池实现. 先引入一个概念, 惊群. 简单举个例子. 春 ...

  7. html,获取iframe的window,document,自定事件与iframe通信

      获取iframe的window对象js代码如下.注意:一定要在文档加载完成之后,才能获取到 var Iframe=document.getElementById("script" ...

  8. 外部div不能包裹内部div的问题

    转自http://www.du52.com/text.php?id=362 当设计网页时,如果内部div全部设置css属性float为左右浮动,那么外部div将不能包裹内部div 解决方法 1.在内部 ...

  9. VUE 实现tab切换页面效果

    一 163邮箱登录tab切换 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  10. LeetCode解题报告—— Median of Two Sorted Arrays

    There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two ...