前台代码:

    <div class="tab-content">
<dl>
<dt>所属栏目</dt>
<dd>
<div class="rule-single-select">
<select id="ddlCategoryId">
<option value="">所有栏目</option>
</select>
</div>
</dd>
</dl>
<dl>
<dt>推荐类型</dt>
<dd>
<div class="rule-multi-checkbox">
<span id="checkboxs">
<input type="checkbox" class="checked" id="PL" /><label>允许评论</label><input type="checkbox"
class="checked" id="ZD" /><label>置顶</label><input type="checkbox" class="checked"
id="TJ" /><label>推荐</label><input type="checkbox" class="checked" id="JY" /><label>只限局域网访问</label></span>
</div>
</dd>
</dl>
<dl>
<dt>文章标题</dt>
<dd>
<asp:TextBox ID="txtTitle" runat="server" CssClass="input normal" datatype="*2-100"
sucmsg=" " />
<span class="Validform_checktip">*标题最多100个字符</span>
</dd>
</dl>
<dl>
<dt>发布时间</dt>
<dd>
<div class="input-date">
<asp:TextBox ID="txtAddTime" runat="server" CssClass="input date" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"
datatype="/^\s*$|^\d{4}\-\d{1,2}\-\d{1,2}\s{1}(\d{1,2}:){2}\d{1,2}$/" errormsg="请选择正确的日期"
sucmsg=" " />
<i>日期</i>
</div>
<span class="Validform_checktip">不选择默认当前发布时间</span>
</dd>
</dl>
<dl>
<dt>分享到上级单位</dt>
<dd>
<a class="clickShow hover checkBoxBtn" href="javascript:void(0);" title="">选择单位</a><span
class="Validform_checktip">说明:[新闻将分享到所勾选的单位(显示在接入单位信息公开新闻栏目中]</span>
<div class="artShare_CheckBox">
<label class="artShare_checkAll">
<input type="checkbox" name="checkAll" /><span class="text">全选</span></label>
<ul class="artShare_List unitlist clearfix">
</ul>
</div>
</dd>
</dl>
<dl>
<dt>转发到其它栏目</dt>
<dd>
<a class="clickShow hover checkBoxBtn" href="javascript:void(0);" title="">选择栏目</a><span
class="Validform_checktip">说明:[可在其他栏目中展示该新闻,可直接放置于一级栏目下]</span>
<div class="artShare_CheckBox">
<label class="artShare_checkAll">
<input type="checkbox" name="checkAll" /><span class="text">全选</span></label>
<ul class="artShare_leaveOneList">
</ul>
</div>
</dd>
</dl>
</div>
<div class="tab-content" style="display: none">
<dl>
<dt>链接类型</dt>
<dd>
<div class="single-select">
<div class="boxwrap">
<a class="select-tit" href="javascript:;"><span>本文页面</span><i></i></a>
<div class="select-items artEdit_urlTypeBox">
<ul>
<li class="selected" data-id="">本文页面</li>
<li data-id="">其他页面</li>
<li data-id="">文件地址</li>
</ul>
</div>
<i class="arrow"></i>
</div>
</div>
<span class="articleURL_input" style="display: none;">
<input type="text" id="txtCallIndex" class="input normal" />
<span class="Validform_checktip">*别名访问,非必填,不可重复</span></span><span class="articleUpload"><input type="file" class="file1" name="file1"/></span> <span class="Validform_checktip">
说明:[.本文页面:点击标题在详情页面查看内容;.其他页面:点击标题打开的是链接页面;.文件地址:点击标题直接下载文件]</span>
</dd>
</dl>
<dl>
<dt>封面图片</dt>
<dd>
<span><input type="file" class="file2" name="file2"/></span><span class="Validform_checktip">说明:[图片(可选)为图片新闻封面,尺寸宽度不能大于900像素,上传图片后请在内容中添加该图片,才能保证新闻内容与新闻封面图片一致]</span>
</dd>
</dl>
<dl class="contentdata">
<dt>内容描述</dt>
<dd>
<%-- 在线编辑器--%>
<input type="hidden" id="ContentText" runat="server" class="contentServer" /> <script id="editor" type="text/plain" name="ueContent" style="width: 99%; height: 350px;"></script> </dd>
</dl>
<iframe id="file_upload_return" hidden="true" name="file_upload_return"></iframe><!--用于获取表单返回的值-->
</div>

js代码需要先构造一个form表单,把所有数据添加到构造的form中。代码如下:

//添加文章
function AddArticle() {
var tmp = {};
tmp.xj_MenuId = $("#ddlCategoryId option:selected").val();
if ($("#PL").prop("checked")) {
tmp.is_Msg = ;
}
else {
tmp.is_Msg = ;
}
if ($("#ZD").prop("checked")) {
tmp.is_Top = ;
}
else {
tmp.is_Top = ;
}
if ($("#TJ").prop("checked")) {
tmp.is_Red = ;
}
else {
tmp.is_Red = ;
}
if ($("#JY").prop("checked")) {
tmp.xj_IsLocalNet = ;
}
else {
tmp.xj_IsLocalNet = ;
}
tmp.xj_RelayMenu = "";
$(".artShare_leaveOneList").find(".artShare_Item input").each(function() {
if ($(this).prop("checked")) {
if (tmp.xj_RelayMenu == "") {
tmp.xj_RelayMenu += $(this).val();
}
else {
tmp.xj_RelayMenu += "," + $(this).val();
}
}
});
tmp.xj_EduEnable = ""
$(".unitlist").find(".artShare_Item input").each(function() {
if ($(this).prop("checked")) {
if (tmp.xj_EduEnable == "") {
tmp.xj_EduEnable += $(this).val();
}
else {
tmp.xj_EduEnable += "," + $(this).val();
}
}
});
tmp.xj_Title = $("#txtTitle").val();
tmp.LinkType = $(".artEdit_urlTypeBox").find(".selected").attr("data-id");
if (tmp.LinkType == ) {
tmp.xj_Content = UE.getEditor('editor').getContent();
if (tmp.xj_Content == "") {
jsprint("文章内容不能为空", '', 'Error');
return false;
}
}
if (tmp.LinkType == ) {
tmp.TitleLink = $("#txtCallIndex").val();
if (tmp.TitleLink == "") {
jsprint("文章链接不能为空", '', 'Error');
return false;
}
}
tmp.xj_AddTime = $("#txtAddTime").val();
if (tmp.xj_AddTime == "") {
jsprint("添加时间不能为空", '', 'Error');
return false;
}
if (tmp.xj_Title == "") {
jsprint("文章标题不能为空", '', 'Error');
return false;
}
if (tmp.xj_MenuId == || tmp.xj_MenuId == ) {
jsprint("栏目选择不正确(如“├ * * * *“)", '', 'Error');
return false;
}
var pams = [];
pams.push($('<input>', { name: 'MenuId', value: tmp.xj_MenuId }));
pams.push($('<input>', { name: 'Msg', value: tmp.is_Msg }));
pams.push($('<input>', { name: 'Title', value: tmp.xj_Title }));
pams.push($('<input>', { name: 'AddTime', value: tmp.xj_AddTime }));
if (tmp.LinkType == ) {
pams.push($('<input>', { name: 'TitleLink', value: tmp.TitleLink }));
}
if (tmp.LinkType == ) {
pams.push($('<input>', { name: 'Content', value: tmp.xj_Content }));
}
if (tmp.LinkType == ) {
var file1 = $(".file1").val();
if (file1 == "") {
jsprint("文件不能为空", '', 'Error');
return false;
}
}
pams.push($('<input>', { name: 'LinkType', value: tmp.LinkType }));
pams.push($('<input>', { name: 'EduEnable', value: tmp.xj_EduEnable }));
pams.push($('<input>', { name: 'RelayMenu', value: tmp.xj_RelayMenu }));
pams.push($('<input>', { name: 'Top', value: tmp.is_Top }));
pams.push($('<input>', { name: 'Red', value: tmp.is_Red }));
pams.push($('<input>', { name: 'IsLocalNet', value: tmp.xj_IsLocalNet }));
pams.push($('<input>', { name: 'op', value: "add_edit_article" }));
pams.push($('<input>', { name: 'state', value: "Add" }));
pams.push($('<input>', { name: 'navName', value: navName }));
var imgfile = $(".file2").val();
if (imgfile == "") {
jsprint("封面图不能为空", '', 'Error');
return false;
}
var turnForm = document.createElement("form");
$('<form>', {
target: 'file_upload_return',
method: 'post',
enctype: "multipart/form-data",
action: '/Ajax/Manage.ashx'
}).append(pams).append($(".file1")).append($(".file2")).submit();
$("#file_upload_return").load(function() {//获取iframe中的内容
var body = $(window.frames['file_upload_return'].document.body);
var data = JSON.parse(body[].textContent);
if (data.status) {
jsprint(data.msg, '/Admin/School/Article_list.aspx', 'Sucess');
return false;
}
jsprint(data.msg, '', 'Error');
return false;
});
}

一般处理程序处理数据:

 private void Add_Edit_Artice()
{
string xj_MenuId = cnt.Request["MenuId"];
string is_Msg = cnt.Request["Msg"];
string xj_Title = cnt.Request["Title"];
string xj_AddTime = cnt.Request["AddTime"];
string TitleLink = cnt.Request["TitleLink"];
string xj_Content = cnt.Request["Content"];
string LinkType = cnt.Request["LinkType"];
string xj_EduEnable = cnt.Request["EduEnable"];
string xj_RelayMenu = cnt.Request["RelayMenu"];
string is_Top = cnt.Request["Top"];
string is_Red = cnt.Request["Red"];
string xj_IsLocalNet = cnt.Request["IsLocalNet"];
string state = cnt.Request["state"];
string navName = cnt.Request["navName"]; if (!ChkAdminLevel(navName, state))
{
cnt.Response.Write(JsonHelper.SerializeObject(new { status = false, msg = "你无权限操作" }));
return;
}
if (string.IsNullOrEmpty(xj_Title))
{
cnt.Response.Write(JsonHelper.SerializeObject(new { status = false, msg = "文章标题不能为空" }));
return;
}
if (string.IsNullOrEmpty(xj_AddTime.ToString()))
{
cnt.Response.Write(JsonHelper.SerializeObject(new { status = false, msg = "文章添加时间不能为空" }));
return;
}
if (int.Parse(LinkType) == )
{
if (string.IsNullOrEmpty(TitleLink))
{
cnt.Response.Write(JsonHelper.SerializeObject(new { status = false, msg = "文章标题链接不能为空" }));
return;
}
}
if (int.Parse(LinkType) == )
{
if (string.IsNullOrEmpty(xj_Content))
{
cnt.Response.Write(JsonHelper.SerializeObject(new { status = false, msg = "文章内容不能为空" }));
return;
}
string key = "";
if (KeywordsHelper.CheckKeywords(xj_Content, out key))
{
cnt.Response.Write(JsonHelper.SerializeObject(new { status = false, msg = "关键词含有非法字符”" + key + "“" }));
return;
}
}
try
{
XinjianSoft.Web.BLL.web_News bll = new XinjianSoft.Web.BLL.web_News(); string relativePath = "";
XinjianSoft.Web.Model.web_News model = new XinjianSoft.Web.Model.web_News();
HttpFileCollection fileCollection = cnt.Request.Files;//获取客户端传来的文件六流
if (state == "Add")
{
if (int.Parse(is_Msg) == )
{
model.is_Msg = true;
}
else
{
model.is_Msg = false;
}
if (int.Parse(is_Red) == )
{
model.is_Red = true;
}
else
{
model.is_Red = false;
}
if (int.Parse(is_Top) == )
{
model.is_Top = true;
}
else
{
model.is_Top = false;
}
if (int.Parse(xj_IsLocalNet) == )
{
model.xj_IsLocalNet = true;
}
else
{
model.xj_IsLocalNet = false;
}
model.LinkType = int.Parse(LinkType);
model.NewsState = "";
if (LinkType == "")
{
model.TitleLink = TitleLink;
}
model.xj_AddTime = DateTime.Now;
model.xj_AddUserId = usermodel.xj_UserName.ToString();
model.xj_Author = usermodel.xj_UserName;
if (LinkType == "")
{
model.xj_Content = xj_Content;
}
model.xj_EduEnable = xj_EduEnable;
model.xj_Enable = ;
model.xj_Hits = ;
model.xj_id = Guid.NewGuid();
model.xj_MenuId = new Guid(xj_MenuId);
model.xj_RelayMenu = xj_RelayMenu;
model.xj_Sort = ;
model.xj_Sources = navName;
model.xj_Title = xj_Title;
model.xj_UnitId = usermodel.UnitID;
model.xj_TrendsShow = false;
if (fileCollection.Count == )
{
//未接收到文件
//防止发生异常
cnt.Response.Write(JsonHelper.SerializeObject(new { status = false, msg = "你未选中任何图片" }));
return;
}
var file1 = fileCollection["file1"];
var file2 = fileCollection["file2"];
if (file1 != null)
{
//服务器段相对路径,上传到相册所在的文件夹下
relativePath = "/Upload/ArtcleFile/" + usermodel.xj_UserName + "/" + DateTime.Now.ToString("yyyyMM");
string strpath = UploadImg(fileCollection["file1"], relativePath);//获得文件存储路径
if (strpath == "")
{
cnt.Response.Write(JsonHelper.SerializeObject(new { status = false, msg = "保存图片发生异常" }));
return;
}
model.TitleLink = strpath;
}
if (file2 != null)
{
//服务器段相对路径,上传到相册所在的文件夹下
relativePath = "/Upload/ArtcleImage/" + usermodel.xj_UserName + "/" + DateTime.Now.ToString("yyyyMM");
string strpath = UploadImg(fileCollection["file2"], relativePath);//获得文件存储路径
if (strpath == "")
{
cnt.Response.Write(JsonHelper.SerializeObject(new { status = false, msg = "保存图片发生异常" }));
return;
}
model.xj_PhotoUrl = strpath;
}
if (bll.Add(model))
{
cnt.Response.Write(JsonHelper.SerializeObject(new { status = true, msg = "保存成功" }));
return;
}
cnt.Response.Write(JsonHelper.SerializeObject(new { status = false, msg = "保存失败" }));
return;
}
}
catch (System.Exception ex)
{
cnt.Response.Write(JsonHelper.SerializeObject(new { status = false, msg = ex.Message }));
return;
}
}

基于file上传文件的并发上传(多个文件一起上传到后台并把数据存储的同一条数据中,如 数据库字段videopath,imge。前台发送来的文件file1,file2。 videopath=file1,imge=file2)的更多相关文章

  1. [C#]_[使用微软OpenXmlSDK (OpenXmlReader)读取xlsx表格] 读取大数据量100万条数据Excel文件解决方案

      1.OpenXmlSDK是个很好的类库,可惜只能通过C#调用,C#的童鞋又福气了. 2.服务端程序由于没法安装office,所以这个对asp.net网站来说是最理想的库了.需要.net 4.0版本 ...

  2. 第十一章:Android数据存储(上)

    数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也是开发平台必须提供的基础功能.不光是在Android平台上,在其他的平台上,数据的存储永远是不可缺少的一块.Androi ...

  3. 【Android开发日记】之入门篇(七)——Android数据存储(上)

    在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也 ...

  4. JavaScript 上万条数据 导出Excel文件 页面卡死

    最近项目要js实现将数据导出excel文件,网上很多插件实现~~那个开心呀,谁知道后面数据量达到上万条时出问题:浏览器不仅卡死,导出的excel文件一直提示网络失败.... debug调试发现var  ...

  5. JavaScript 上万条数据 导出Excel文件(改装版)

    最近项目要js实现将数据导出excel文件,网上很多插件实现~~那个开心呀,谁知道后面数据量达到上万条时出问题:浏览器不仅卡死,导出的excel文件一直提示网络失败.... debug调试发现var  ...

  6. 基于腾讯云存储COS的ClickHouse数据冷热分层方案

    一.ClickHouse简介 ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS),支持PB级数据量的交互式分析,ClickHouse最初是为YandexMetrica ...

  7. lr参数化——500户并发迭代1次 循环取5条数据

    lr参数化——500户并发迭代1次 循环取5条数据 比如vuser1.vuser2.vuser3..........,vuser500 shuju1,shuju2,shuju3,shuju4,shuj ...

  8. 基于springboot+jquery+H5的文件(并发+断点+分片)的上传方案

    1.支持文件分片断点续传 2.支持已上传文件再次上传时秒传 3.多个人对同一个文件同时上传可以多线程并发协调上传,加快超大文件的上传速度. 技术点:springboot + webflux + red ...

  9. c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Async .net 多线程 Thread ThreadPool Task .Net 反射学习

    c#中@标志的作用   参考微软官方文档-特殊字符@,地址 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/toke ...

随机推荐

  1. llinux/重启/用户切换/注销

    一.指令 shutdown命令 shutdown -h now //立即关机 shutdown -h 2 //分钟后关机 shutdown -r now //立即重启 shutdown -r 1 // ...

  2. 使用文件流与使用缓冲流完成文件的复制操作性能对比,文件流 FileInputStream FileOutputStream 缓冲流: BufferedInputStream BufferedOutputStream

    package seday06; import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOExc ...

  3. Java操作数据库——使用连接池连接数据库

    Java操作数据库——使用连接池连接数据库 摘要:本文主要学习了如何使用JDBC连接池连接数据库. 传统方式和连接池方式 传统方式的步骤 使用传统方式在Java中使用JDBC连接数据库,完成一次数据库 ...

  4. 松软科技前端课堂:JavaScript 数值方法

    Number 方法帮助您处理数值. Number 方法和属性 原始值(比如 3.14 或 2016),无法拥有属性和方法(因为它们不是对象). 但是通过 JavaScript,方法和属性也可用于原始值 ...

  5. 深入浅出之js闭包知识点梳理(一)

    简单认识闭包   前言:和大多数编程语言一样,js也采用词法作用域,即函数的执行依赖于变量作用域,这个作用域是在函数定义时决定的,而不是函数调用时决定的.函数对象可以通过作用域链关联起来,函数体内部的 ...

  6. Django3.0 前瞻 支持异步通信

    最近两年,Django的版本号提升得特别快,2.0还没有多久,很快就要到3.0了. 让我们先看看官方的路线图和时间表: 版本号 发布日期 停止更新日期 停止维护日期 3.0 2019-12 2020- ...

  7. ASP.NET CORE HOW TO ADD "ACCESS-CONTROL-EXPOSE-HEADERS" HEADERS?

    services.AddCors(options =>       {                    options.AddPolicy("AnotherPolicy" ...

  8. Codeforces Round #603 (Div. 2) E. Editor 线段树

    E. Editor The development of a text editor is a hard problem. You need to implement an extra module ...

  9. Eviews作时间序列分析的一个实例

    时间序列分析是作时间序列数据预测的一个重要部分,由于此次实验室竞赛也用到了时间序列分析,就在此说一下平稳性分析以及非平稳处理的方法:   1.判断平稳性         1.1平稳性的定义       ...

  10. vue中\$refs、\$emit、$on的使用场景

    1.$emit的使用场景 子组件调用父组件的方法并传递数据注意:子组件标签中的时间也不区分大小写要用“-”隔开 子组件: <template> <button @click=&quo ...