版权声明:本文为博主原创文章,未经博主允许不得转载。

1.页面

<head runat="server">
<title>上传文件</title>
<!--#include file="/_Layouts/include/Common.htm" -->
<link href="/_Layouts/res/css/ahtf.css" rel="stylesheet" type="text/css" />
<script src="../res/js/calendarCN.js" type="text/javascript"></script>
<style type="text/css">
.style1
{
width: 50px;
}
</style>
<script type="text/javascript">
var appId,
appType,
aDefId; $(function () {
appType = GetQueryString("appType");
aDefId = GetQueryString("activityId");
appId = GetQueryString("appId");
});
//获取请求参数
function GetQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr().match(reg);
if (r != null) return decodeURI(r[]); return null;
} //新增一行
function insertRows() {
var tb = $("#tbUpload"); //找到table的ID
var rowNum = $("#tbUpload tr").size(); //获取表格的行数
var tempRow = rowNum - ; ; //用于新增tr、td、属性下标 var $tdEm = $("<td></td>"); //创建一个td
var $tdFile = $("<td></td>"); //创建一个td
$tdEm.html(""); //空的
$tdFile.html("<input type =\'file\' id=\'UploadAttachment" + (tempRow + ) + "\' name=\'UploadAttachment" + (tempRow + ) + "\' value=\'\' style=\'width: 450px;\'/>"
+ "&nbsp;&nbsp; <a href=\'#\' name=\'teams[" + tempRow + "].del\' onclick=\'delRows(" + tempRow + ")\'>删除</a>"); //文件上传控件和删除按钮
var $tr = $("<tr id=\'tr_" + tempRow + "\' ></tr>"); // 创建tr,将td放置到tr中
$tr.append($tdEm);
$tr.append($tdFile);
//在表格的最后追加新增的tr
tb.append($tr);
} //删除某行
function delRows(sub) {
var rowNum = sub + ; //行号=下标+1
var tb = $("#tbUpload"); //找到table的ID
var tempRow = $("#tbUpload tr").size(); //获取表格的行数
if (tempRow > rowNum) {
$("#tr_" + sub).remove(); //删除tr
for (i = (parseInt(sub) + ); i < tempRow - ; i++) { //把删除的行后面的列及元素都向前挪一位
$("#tr_" + i).attr("id", "tr_" + (i - ) + "");
$("input[name='UploadAttachment" + (i + ) + "']").attr("name", "UploadAttachment" + i);
$("a[name='teams[" + i + "].del").attr("onclick", "delRows(" + (i - ) + ")");
$("a[name='teams[" + i + "].del").attr("name", "teams[" + (i - ) + "].del");
}
}
} //保存上传的文件
function saveAttachment() {
var count = $("#tbUpload tr").size();
$.ajaxFileUpload
(
{
url: '/_Layouts/wf/Controller/JyzdcgtzgtzdWfManager.ashx?method=SaveAttachment', //用于文件上传的服务器端请求地址
type: 'POST',
data: { appId: appId, aDefId: aDefId, appType: appType, count: count },
secureuri: false, //一般设置为false
fileElementId: ['UploadAttachment0'], //'UploadAttachment1', 'UploadAttachment2', 'UploadAttachment3', 'UploadAttachment4', 'UploadAttachment5', 'UploadAttachment6'], //文件上传空间的id属性
dataType: 'JSON', //返回值类型 一般设置为json
success: function (data) //服务器成功响应处理函数
{
data = $.parseJSON(data);
if (data.success) {
window.opener.SearchAttachment(appId, aDefId, "0,1", data.fileId);
$.messager.alert('提示', data.message, 'info');
window.close();
} else {
$.messager.alert('提示', data.message, 'error');
}
}
}
);
} </script>
</head>
<body>
<form id="form1" runat="server">
<input id="AppId" type="hidden" value="" />
<div>
<table id="tbUpload" border="" style="width: 800px; text-align: left; font-size: 12px;">
<tr id="trFirst" style="height: 35px">
<td class="style1">
上传文件
</td>
<td>
<input type="file" name="UploadAttachment0" id="UploadAttachment0" style="width: 450px;" />&nbsp;&nbsp;
<a href="#" onclick="insertRows();">添加</a> &nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold">
<a id="UploadAttachment_btnSubmit" href="javaScript:void(0)" onclick="saveAttachment()">
上传</a></span>
<%--<a id="Span1" href="#UploadAttachment_btnSubmit"
style="color: red; ">请选择要上传的文件</a> 关于锚链接 的实验 感觉跟label for差不多--%>
<span id="UploadAttachment_RequiredFieldValidator1" style="color: red; display: none;">
请选择要上传的文件</span>
</td>
</tr>
</table>
<%--上传文件:<input type="file" name="UploadAttachment1$FileUpload" id="UploadAttachment1_FileUpload" style="width:450px;">
添加 上传--%>
</div>
</form>
</body>
</html>

后台SaveAttachment方法:

#region 保存上传的文件 modify by wh 2017022
//[WNet("WNet1")]
public void SaveAttachment(HttpContext context)
{
try
{
#region 参数
string appId = context.Request["appId"];
string aDefId = context.Request["aDefId"];
string appType = context.Request["appType"];
int count = int.Parse(context.Request["count"]);
#endregion string fileId = string.Empty;
int flag = ; //context.Request.Files.AllKeys //接收上传后的文件
for (int i = ; i < count; i++)
{
HttpPostedFile file = context.Request.Files["UploadAttachment" + i + ""];
//获取文件的文件名(不包括文件的路径)
if (file == null)
{
continue;
}
string fileName = file.FileName;
if (!string.IsNullOrEmpty(fileName))
{
string path = AppHelper.GetSysPath(SysFolder.Lgfz);
if (appType == "JYZDCGTZG")
{
path += "/Jyzdcgt/";
}
else if (appType == "JYZYCSXSB")
{
path += "/Jyzycsx/";
}
else if (appType == "YKDCGTZG")
{
path += "/Ykdcgt/";
}
// 判断路径是否存在,不存在则新建路径
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
} FileModel fileInf = new FileModel();
string guid = Guid.NewGuid().ToString();
string filePath = path + guid + "_" + Path.GetFileName(fileName);
//保存文件
file.SaveAs(filePath); fileInf.FileId = guid;
fileInf.FileName = Path.GetFileName(file.FileName);//获取文件的文件名(不包括文件的路径)
fileInf.FileAddress = path + guid + "_" + fileName;//文件存放地址
fileInf.ActivityId = aDefId;
fileInf.AppId = appId;
fileInf.CreateUser = CurrentUser.User.UserAlias;
fileInf.LastModifyUser = CurrentUser.User.UserAlias;
fileInf.Status = "";//status为0——新增未保存 // 保存文件信息到数据库
Dao.SaveAttachment(fileInf);
flag++;
fileId += fileInf.FileId;
if (i != count - ) {
fileId += ",";
}
}
}
if (flag > )
{
Dictionary<string, object> map = new Dictionary<string, object>();
map["success"] = true;
map["message"] = "文件上传成功!";
map["fileId"] = fileId;// fileInf.FileId;
context.Response.Write(JsonHelper.getBeanJson(map));
}
else
{
Dictionary<string, object> map = new Dictionary<string, object>();
map["success"] = false;
map["message"] = "文件为空!";
context.Response.Write(JsonHelper.getBeanJson(map));
}
}
catch (Exception ex)
{
Dictionary<string, object> map = new Dictionary<string, object>();
map["success"] = false;
map["message"] = "文件上传失败!";
context.Response.Write(JsonHelper.getBeanJson(map));
Log.Error("保存文件信息异常:" + ex.Message);
}
}
#endregion

应该就没了

.net 多文件上传的更多相关文章

  1. jquery.uploadify文件上传组件

    1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...

  2. 11、Struts2 的文件上传和下载

    文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置 ...

  3. Java FtpClient 实现文件上传服务

    一.Ubuntu 安装 Vsftpd 服务 1.安装 sudo apt-get install vsftpd 2.添加用户(uftp) sudo useradd -d /home/uftp -s /b ...

  4. 小兔Java教程 - 三分钟学会Java文件上传

    今天群里正好有人问起了Java文件上传的事情,本来这是Java里面的知识点,而我目前最主要的精力还是放在了JS的部分.不过反正也不麻烦,我就专门开一贴来聊聊Java文件上传的基本实现方法吧. 话不多说 ...

  5. ,net core mvc 文件上传

    工作用到文件上传的功能,在这个分享下 ~~ Controller: public class PictureController : Controller { private IHostingEnvi ...

  6. Web开发安全之文件上传安全

    很长一段时间像我这种菜鸡搞一个网站第一时间反应就是找上传,找上传.借此机会把文件上传的安全问题总结一下. 首先看一下DVWA给出的Impossible级别的完整代码: <?php if( iss ...

  7. AutoIt实现Webdriver自动化测试文件上传

    在运用WebDriver进行自动化测试时,由于WebDriver自身的限制,对于上传文件时Windows弹出的文件选择窗口无法控制,通过在网上查找资料锁定使用AutoIt来控制文件上传窗口. Auto ...

  8. Struts的文件上传下载

    Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ...

  9. .JavaWeb文件上传和FileUpload组件使用

    .JavaWeb文件上传 1.自定义上传 文件上传时的表单设计要符合文件提交的方式: 1.提交方式:post 2.表单中有文件上传的表单项:<input type="file" ...

  10. ASP.NET MVC5+EF6+EasyUI 后台管理系统(32)-swfupload多文件上传[附源码]

    系列目录 文件上传这东西说到底有时候很痛,原来的asp.net服务器控件提供了很简单的上传,但是有回传,还没有进度条提示.这次我们演示利用swfupload多文件上传,项目上文件上传是比不可少的,大家 ...

随机推荐

  1. bzoj4302 Hdu 5301 Buildings

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4302 [题解] 出自2015多校-学军 题意大概是给出一个n*m的格子有一个格子(x,y)是 ...

  2. UVa11988 Broken Keyboard (a.k.a. Beiju Text)

    题目复制太麻烦了,甩个链接 http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18693 直接模拟光标操作时间复杂度较高,所以用链 ...

  3. bzoj3790 manacher算法+贪心

    紧跟jk大佬的步伐 这道题哇 因为机器一能生成回文串 所以我们只要用manacher跑一遍求出q[i]这样就把问题转化成了类似线段覆盖的题目 贪心就好了 至于,BIT优化dp我不会所以直接贪心了 注意 ...

  4. swift网址

    http://www.cocoachina.com/industry/20140613/8818.html Swift -- 中文版两大官方文档汇总发布于:2014-06-13 15:34阅读数:22 ...

  5. Linux利用list_head结构实现双向链表

    原文地址:http://www.cnblogs.com/bastard/archive/2012/10/19/2731107.html 通常实现双向链表的数据结构: struct list_node1 ...

  6. 配置iptables,把80端口转到8080

    在Linux的下面部署了tomcat,为了安全我们使用非root用户进行启动,但是在域名绑定时无法直接访问80端口号.众所周知,在unix下,非root用户不能监听1024以上的端口号,这个tomca ...

  7. Java 原子性引用 AtomicReference

    http://www.jianshu.com/p/882d0e2c3ea6 实现 原子操作 使用场景: 一个线程使用student对象,另一个线程负责定时读表,更新这个对象.那么就可以用AtomicR ...

  8. flask学习:如何从config里载入配置

    代码如下: 1.main.py from flask import Flask from config import DevConfig app=Flask(__name__) app.config. ...

  9. redis发布订阅、HyperLogLog与GEO功能的介绍

    一.发布订阅 1.模型 发布者发布消息,订阅者接收消息 2.API 2.1.publish 2.2.订阅 2.3.取消订阅 unsubsribe 2.4.其他api 二.HyperLogLog 极小空 ...

  10. Jquery获取服务器端控件的三种方式

    一 Jquery获得服务器控件值的方法由于ASP.NET网页运行后,服务器控件会随机生成客户端id,jquery获取时候不太好操作,google了下,总结有以下3种方法: 服务器控件代码:<as ...