基于file上传文件的并发上传(多个文件一起上传到后台并把数据存储的同一条数据中,如 数据库字段videopath,imge。前台发送来的文件file1,file2。 videopath=file1,imge=file2)
前台代码:
<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)的更多相关文章
- [C#]_[使用微软OpenXmlSDK (OpenXmlReader)读取xlsx表格] 读取大数据量100万条数据Excel文件解决方案
1.OpenXmlSDK是个很好的类库,可惜只能通过C#调用,C#的童鞋又福气了. 2.服务端程序由于没法安装office,所以这个对asp.net网站来说是最理想的库了.需要.net 4.0版本 ...
- 第十一章:Android数据存储(上)
数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也是开发平台必须提供的基础功能.不光是在Android平台上,在其他的平台上,数据的存储永远是不可缺少的一块.Androi ...
- 【Android开发日记】之入门篇(七)——Android数据存储(上)
在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也 ...
- JavaScript 上万条数据 导出Excel文件 页面卡死
最近项目要js实现将数据导出excel文件,网上很多插件实现~~那个开心呀,谁知道后面数据量达到上万条时出问题:浏览器不仅卡死,导出的excel文件一直提示网络失败.... debug调试发现var ...
- JavaScript 上万条数据 导出Excel文件(改装版)
最近项目要js实现将数据导出excel文件,网上很多插件实现~~那个开心呀,谁知道后面数据量达到上万条时出问题:浏览器不仅卡死,导出的excel文件一直提示网络失败.... debug调试发现var ...
- 基于腾讯云存储COS的ClickHouse数据冷热分层方案
一.ClickHouse简介 ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS),支持PB级数据量的交互式分析,ClickHouse最初是为YandexMetrica ...
- lr参数化——500户并发迭代1次 循环取5条数据
lr参数化——500户并发迭代1次 循环取5条数据 比如vuser1.vuser2.vuser3..........,vuser500 shuju1,shuju2,shuju3,shuju4,shuj ...
- 基于springboot+jquery+H5的文件(并发+断点+分片)的上传方案
1.支持文件分片断点续传 2.支持已上传文件再次上传时秒传 3.多个人对同一个文件同时上传可以多线程并发协调上传,加快超大文件的上传速度. 技术点:springboot + webflux + red ...
- 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 ...
随机推荐
- 设计院老师良心汇总:值得牢记的15个CAD基础技巧,能帮大忙
哈喽!你们的CAD魔鬼(老师)来喽! 良心CAD技巧汇总,设计院师傅精心汇总,值得你牢记的15个CAD基础技巧,满满的都是干货,日常最常见的问题以及解决方法这里都汇总给你,给你高效的绘图体验,关键时刻 ...
- CSAPP 2-1 - 信息的存储
目录 0 基础概念及摘要 1 信息存储 1.1 十六进制表示法 1.2 字数据大小 1.3 寻址和字节顺序 0 基础概念及摘要 (1) 基础概念: 现代计算机存储和处理的信息以二进制信号表示 -- 0 ...
- Fundebug前端异常监控插件更新至2.0.0,全面支持TypeScript
摘要: 是时候支持TS了! Fundebug前端异常监控服务 Fundebug提供专业的前端异常监控服务,我们的插件可以提供全方位的异常监控,可以帮助开发者第一时间定位各种前端异常,包括但不限于Jav ...
- Young and Beautiful 新红楼剪辑(by up)
up剪辑的新红楼视频,配上Young and Beautiful 这首英文歌,很优美^_^
- Redis安装和基本操作
Redis 简介Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 是属于非关系型数据库1.数据比模型较简单2.需要灵活性更强的IT系统3.对数据库性能 ...
- 【Oracle】常用函数
来源自:https://www.cnblogs.com/lxl57610/p/7442130.html Oracle SQL 提供了用于执行特定操作的专用函数.这些函数大大增强了 SQL 语言的功能. ...
- 洛谷 P5640 【CSGRound2】逐梦者的初心
洛谷 P5640 [CSGRound2]逐梦者的初心 洛谷传送门 题目背景 注意:本题时限修改至250ms,并且数据进行大幅度加强.本题强制开启O2优化,并且不再重测,请大家自己重新提交. 由于Y校的 ...
- CSP 2019 游记
Day -32 开坑. 没什么好说的,等个 5 天等初赛(应该叫第一轮认证)挂掉之后就能弃坑了. 今天开始停课,虽然每天只停半天,但是感觉还是特别的舒服~ 然而得等初赛过了才能全天停课-- 没关系,熬 ...
- Windows许可证 即将过期
最近打开电脑,系统总是自动弹出Windows许可证即将过期的弹窗,现在总结方法如下. 命令都是在运行窗口输入的打开方式:win+R组合键或者右键点击win10开始菜单,点击“运行”查看系统版本:win ...
- 瓜子IM智能客服系统的数据架构设计(整理自现场演讲)
本文由ITPub根据封宇在[第十届中国系统架构师大会(SACC2018)]现场演讲内容整理而成. 1.引言 瓜子业务重线下,用户网上看车.预约到店.成交等许多环节都发生在线下.瓜子IM智能客服系统的目 ...