基于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 ...
随机推荐
- C#-Excel导入工资条群发邮箱
第一次写随笔,一名在实习的程序猿,做的一个小应用,需要的朋友可以参考参考, 使用WinForm实现了一个导入Excel,群发工资条的功能.功能已经实现,还不够完善,. 大致运用了OleDbConnec ...
- Linux-shell学习笔记1
1.检查 /etc/shells 这个文件可以得到有多少可用的shell,一般有一下几个: /bin/sh (已经被 /bin/bash 所取代) /bin/bash (就是 Linux 默认的 sh ...
- Cesium专栏-绕点飞行效果(附源码下载)
Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...
- Android studio将一个项目作为module导入另一个项目
有两个Android项目,一个为pozhudl,一个为app,现在欲将pozhudl项目作为module导入到app中,并调用pozhudl项目中的类 先在pozhudl项目的build.gradle ...
- android 对于asset和raw下文件的操作
Android 中资源分为两种,一种是res下可编译的资源文件, 这种资源文件系统会在R.Java里面自动生成该资源文件的ID,访问也很简单,只需要调用R.XXX.id即可;第二种就是放在assets ...
- Fundebug网站升级HTTP/2,真的变快了!
作为新一代的HTTP协议,HTTP/2可以提高网站性能,优化用户体验,Fundebug也是时候升级HTTP/2了,虽然已经有点晚了. 升级HTTP/2是一件很简单的事情,改1行Nginx配置就好了,但 ...
- Thinkphp 模板中 if 嵌套层级过多的问题,嵌套3级就报错,取消层级限制
解决此问题有两种办法:1.第三层if换成eq或者原生<?php 'abc';> 2.修改Tp核心配置文件 1.第三层if换成eq或者原生<?php 'abc';> 如下图&l ...
- Django2.1.1与xadmin0.6.0遇到的坑(一)
(1)django2.0把from django.core.urlresolvers修改成了django.urls 异常信息: ModuleNotFoundError: No module named ...
- 工作日志,go get -v -x github.com/pebbe/zmq4 失败问题
工作日志,go get -v -x github.com/pebbe/zmq4 失败问题 笔者因为工作需要使用ZeroMQ,但是在执行go get -v -x github.com/pebbe/zmq ...
- STM32F373(青风)+CUBEMX快速上手
STM32F373(青风)+CUBEMX快速上手 Created: Nov 23, 2019 7:43 PM Tags: CUBEMX,STM32 硬件熟悉 连接线 USB-TYPEB电源线一根,用于 ...