留言发布时间功能:
界面:
前台代码:
在Datalist控件中:
在<%#getIsDate(Convert.ToString(Eval("issuanceDate")))%>发布的评论:</td>
后台代码:
//返回发布的时间
public string getIsDate(string date)
{
//转换时间
DateTime isDate = Convert.ToDateTime(date);
//获取当前时间
DateTime nowDate = DateTime.Now;
//获取两个时间的差
TimeSpan ts = nowDate - isDate;
//将时间差转换为分
int second = Convert.ToInt32(ts.TotalSeconds) / 60;
if (second == 0)
{
return "60秒内";
}
else
if (second < 60)
{
return second.ToString() + "分钟前";
}
else if (second > 60 && second < 1440)
{
return Convert.ToString(second / 60) + "小时前";
}
else
return date;
}
投票获取IP,防止再投:
//将视频id和用户ip保存到数据库中防止重复投票
protected void addPoll(string sqlUpd, string videoId)
{
//获取当前用户的ip
string userIP = Request.UserHostAddress.ToString();
//编写SQL查询用户ip是否已对该视频投票
string sqlSel = "select * from videoPoll where ip='" + userIP + "' and videoId='" + videoId + "'";
if (!(operateData.getCount(sqlSel) > 0))
{
//如果未投票执行SQL语句进行投票
operateData.execSql(sqlUpd);
//编写SQL语句记录用户的ip和视频id
string sqlIns = "insert videoPoll values('" + userIP + "'," + videoId + ")";
operateData.execSql(sqlIns);
RegisterStartupScript("", "<script>alert('成功!')</script>");
}
else
{
RegisterStartupScript("", "<script>alert('一个视频只可以投一次')</script>");
}
}
用JS限制留言字数:
<script language="javascript">
function change()
{
//获取评论文本框中的值
var str=document.getElementById('txtContent').value;
//获取当前还可以输入的字符数量
var sum=500-str.length;
//判读是否还可以输入字符
if(sum<=0)
{
//设置Label控件显示文本为红色
document.getElementById('labCount').style.color="Red";
//截取文本框中的字符串,从0位置开始截取,截取到500位
document.getElementById('txtContent').value=document.getElementById('txtContent').value.substring(0,500);
//显示可以输入的字符数量
document.getElementById('labCount').innerHTML=sum;
}else
{
//显示可以输入的字符数量
document.getElementById('labCount').innerHTML=sum;
//设置Label控件的文本颜色
document.getElementById('labCount').style.color="#006FC3";
}
}
</script>
您还可以输入<asp:Label ID="labCount" runat="server" Text="500"></asp:Label>字符
上传视频:
界面:
前台代码:
<table width="500" border="0" cellspacing="0" cellpadding="0" style="border-right: #71add1 1px solid; border-top: #71add1 1px solid; border-left: #71add1 1px solid; border-bottom: #71add1 1px solid;">
<tr>
<td height="36" align="left" valign="middle" background="../images/glsc1_05.jpg" class="b" style="width: 553px"> <span class="hongcu">视频上传</span></td>
</tr>
<tr>
<td valign="top" style="width: 553px; height: 288px;">
<table class="huise1" border="0" cellpadding="0" cellspacing="0" style="width: 490px; height: 218px">
<tr>
<td colspan="2">
</td>
<td colspan="1" style="width: 154px">
</td>
</tr>
<tr>
<td style="width: 127px; text-align: center">
视频标题:</td>
<td style="width: 26px">
<asp:TextBox ID="txtTitle" runat="server"></asp:TextBox></td>
<td style="width: 154px; text-align: left;">
<span style="color: #ff0000">*</span></td>
</tr>
<tr>
<td style="width: 127px; text-align: center">
视频内容:</td>
<td style="width: 26px">
<asp:TextBox ID="txtContent" runat="server" Height="104px" TextMode="MultiLine" Width="207px"></asp:TextBox></td>
<td style="width: 154px; text-align: left;" valign="top">
</td>
</tr>
<tr>
<td style="width: 127px">
上传视频:</td>
<td style="width: 26px; text-align: left">
<asp:FileUpload ID="fileupVideo" runat="server" /></td>
<td style="width: 154px; text-align: left">
<span style="color: #ff0033">
主能上传.flv .avi.wmv</span></td>
</tr>
<tr>
<td style="width: 127px; height: 29px">
视频类型:</td>
<td style="width: 26px; height: 29px; text-align: left">
<asp:RadioButtonList ID="radBtnListType" runat="server" Height="21px" RepeatDirection="Horizontal"
Width="228px">
<asp:ListItem Selected="True">搞笑</asp:ListItem>
<asp:ListItem>体育</asp:ListItem>
<asp:ListItem>电影</asp:ListItem>
<asp:ListItem>动漫</asp:ListItem>
</asp:RadioButtonList></td>
<td style="width: 154px; height: 29px; text-align: left">
</td>
</tr>
<tr>
<td colspan="2">
</td>
<td colspan="1" style="width: 154px">
</td>
</tr>
<tr>
<td colspan="2" style="height: 24px">
<asp:Button ID="btnUpVideo" runat="server" OnClick="btnUpVideo_Click" Text="上 传" />
<asp:Button ID="btnReturn" runat="server" Text="返 回" PostBackUrl="~/user/userIndex.aspx" />
</td>
<td colspan="1" style="width: 154px; height: 24px;">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" style="width: 553px; height: 22px;" ></td>
</tr>
<tr>
<td height="4" style="width: 553px"></td>
</tr>
</table>
后台代码:
//上传转换视频,并将相应的信息存到数据库中
protected void btnUpVideo_Click(object sender, EventArgs e)
{
//获取上传文件的名称
string upFileName =fileupVideo.FileName;
//判断是否选择了文件
if (this.fileupVideo.HasFile)
{
//获取文件的扩展名
string upExtension = upFileName.Substring(upFileName.LastIndexOf(".") + 1);
//判断扩展名是否正确
if (checkExtension(upExtension))
{
//获取上传文件所保存的路径
string upFilePath = Server.MapPath("../upFile/") + upFileName;
//将文件保存到指定路径中
fileupVideo.SaveAs(upFilePath);
//获取当前时间
string saveName = DateTime.Now.ToString("yyyyMMddHHmmssffff");
//获取视频转换后所保存的路径及文件名
string playFile = "playFile/" + saveName + ".flv";
//获取图片所保存的路径及名称
string imgFile = "imgFile/" + saveName + ".jpg";
try
{
//判断上传的文件是否为flv格式
if (upExtension == "flv")
{
//如果为flv格式直接保存到指定路径下
File.Copy(fileupVideo.PostedFile.FileName,Server.MapPath("../"+playFile));
//调用公共类中的catchImg方法截取视频图片
operateMethod.catchImg(Server.MapPath("../" + playFile), Server.MapPath("../" + imgFile));
//调用自定义insertVideoInfo方法将视频的信息保存到数据库中
insertVideoInfo(playFile, imgFile);
}
else
{
//调用公共类中的changeVideoType方法转换视频格式
if (operateMethod.changeVideoType(upFileName, Server.MapPath("../") + playFile, Server.MapPath("../") + imgFile))
{
//调用自定义insertVideoInfo方法将视频信息保存到数据库中
insertVideoInfo(playFile,imgFile);
//删除上传的视频
File.Delete(upFilePath);
}
else
{
RegisterStartupScript("false", "<script>alert('上传失败!')</script>");
//删除上传的视频
File.Delete(upFilePath);
}
}
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
}
else {
RegisterStartupScript("false", "<script>alert('文件格式错误!')</script>");
}
}
}
//将视频信息存储到数据库中
private void insertVideoInfo(string playFileh, string imgFile)
{
//获取用户名
string userName =Session["userName"].ToString();
//获取视频名称
string videoTitle = txtTitle.Text;
//获取视频内容
string videoContent = txtContent.Text;
//获取当前时间
string date = DateTime.Now.ToString();
//获取视频路径
string videoPath = playFileh;
//获取图片路径
string videoPicture = imgFile;
//获取视频的类型
string videoType = "";
int count = radBtnListType.Items.Count;
for (int i = 0; i < count; i++)
{
if (radBtnListType.Items[i].Selected)
{
videoType = radBtnListType.Items[i].Value;
break;
}
}
//编写SQL语句将视频的详细信息添加到数据库中
string sqlInsert = "insert into videoInfo values('" + userName + "','" + videoTitle + "','" + videoContent + "','" + date + "','" + videoPath + "','" + videoPicture + "','" + videoType + "','','','','','')";
if (operateData.execSql(sqlInsert))
{
RegisterStartupScript("true", "<script>alert('上传成功!')</script>");
//编写SQL语句将当前用户的积分增加
string sqlUpd=" update userInfo set sumMark=sumMark+100 where userName='"+userName+"'" ;
operateData.execSql(sqlUpd);
}else RegisterStartupScript("true", "<script>alert('上传失败!')</script>");
}
//自定义方法判断视频格式是否正确
private bool checkExtension(string extension)
{
string[] videoExtension = new string[] { "flv", "avi", "wmv", };
bool strReturn =false;
//遍历数组判断当前上传的视频格式是否正确
foreach (string var in videoExtension)
{
if (var == extension)
{
strReturn = true; break;
}
}
return strReturn;
}
}
类中相关方法:
/// <summary>
/// 对视频进行图片截取
/// </summary>
/// <param name="fileName">需要截取图片的视频路径</param>
/// <param name="imgFile">截取图片后保存的图片路径</param>
public static void catchImg(string fileName,string imgFile)
{
//获取截图工具路径
string ffmpeg = System.Web.HttpContext.Current.Server.MapPath("../") + ffmpegtool;
//获取截图后保存的路径
string flv_img = imgFile;
//获取截取图片的大小
string FlvImgSize = sizeOfImg;
Process pss = new Process();
//设置启动程序的路径
pss.StartInfo.FileName = ffmpeg;
pss.StartInfo.Arguments = " -i " + fileName + " -y -f image2 -ss 2 -vframes 1 -s " + FlvImgSize + " " + flv_img;
//启动进程
pss.Start();
}
//获取转换工具路径
public static string ffmpegtool = ConfigurationManager.AppSettings["ffmpeg"];
//获取视频的文件夹名
public static string upFile = "upfile/";
//获取图片文件的文件夹名
public static string imgFile = "imgFile/";
//获取转换后文件的文件夹名
public static string playFile = "playFile/";
//文件图片大小
public static string sizeOfImg = ConfigurationManager.AppSettings["imgSize"];
//文件大小
public static string widthOfFile = ConfigurationManager.AppSettings["widthSize"];
public static string heightOfFile = ConfigurationManager.AppSettings["heightSize"];
/// <summary>
/// 将视频文件转换成flv格式,并保存到playFile文件夹下
/// </summary>
/// <param name="fileName">需要转换视频的路径</param>
/// <param name="playFile">视频转换flv格式后保存的路径</param>
/// <param name="imgFile">在视频文件中抓取图片后保存路径</param>
/// <returns>成功:返回图片虚拟地址; 失败:返回空字符串</returns>
public static bool changeVideoType(string fileName, string playFile, string imgFile)
{
//获取视频转换工具的路径
string ffmpeg= System.Web.HttpContext.Current.Server.MapPath("../") + ffmpegtool;
//获取需要转换的视频路径
string Name = System.Web.HttpContext.Current.Server.MapPath("../") + upFile + "/" + fileName;
if ((!System.IO.File.Exists(ffmpeg)) || (!System.IO.File.Exists(Name)))
{
return false;
}
//获取视频转换后需要保存的路径
string flv_file = playFile;
//创建Process对象
Process pss = new Process();
//不显示窗口
pss.StartInfo.CreateNoWindow = false;
//设置启动程序的路径
pss.StartInfo.FileName = ffmpeg;
//设置执行的参数
pss.StartInfo.Arguments = " -i " + Name + " -ab 128 -ar 22050 -qscale 6 -r 29.97 -s " + widthOfFile + "x" + heightOfFile + " " + flv_file;
try
{
//启动转换工具
pss.Start();
while (!pss.HasExited)
{
continue;
}
//截取视频的图片
catchImg(Name, imgFile);
System.Threading.Thread.Sleep(4000);
if (!File.Exists(imgFile))
{
File.Copy(System.Web.HttpContext.Current.Server.MapPath("../") + "imgHead\\default.gif", imgFile);
}
return true;
}
catch
{
return false;
}
}
- Asp.Net MVC实现优酷(youku)Web的上传
优酷第三方上传API没有.NET版本的SDK,让从事.NET开发人员要实现开放平台上传文件无从下手.本文经过一天的预读优酷文档,以NET方式实现了视频上传. 参考: 优酷开放文档 http://ope ...
- ASP.NET MVC 网站开发总结(三) ——图片截图上传
本着简洁直接,我们就直奔主题吧,这里需要使用到一个网页在线截图插件imgareaselect(请自行下载). 前台页面: <!DOCTYPE html> <html> < ...
- Java 开源博客 Solo 1.8.0 发布 - 改进文件上传
本次发布主要是更新了编辑器,使其更好地支持文件上传.(1.8.0 版本变更记录请看这里) 我们的 Markdown 编辑器: 另外,我们对 HTTPS 的支持也更完善了,欢迎大家试用! 简介 Solo ...
- wsl 2 unbuntu 部署 asp.net core 使用 nginx 做反向代理,调试文件上传失败
继上一篇 asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授权 的公司内部项目上线后发现文件上传功能有问题. 上传的文件超过50M以后前端就报错了,没有状态返回,也没有响 ...
- asp.net mvc4 easyui datagrid 增删改查分页 导出 先上传后导入 NPOI批量导入 导出EXCEL
效果图 数据库代码 create database CardManage use CardManage create table CardManage ( ID ,) primary key, use ...
- ASP.NET MVC 使用Uploadify实现多文件异步无刷新上传
软件技术开发,合作请联系QQ:858-048-581 这里我通过使用uploadify组件来实现异步无刷新多文件上传功能. 1.首先下载组件包uploadify,我这里使用的版本是3.1 2.下载后解 ...
- 那些年的 网络通信之 TCP/IP 传输控制协议 ip 加 端口 客户端上传文件到服务器端服务器端返回上传成功消息
多线程开启, 客户端通过 Socket 流 上传文件到服务端的一个小程序练习. 1. 抓住阻塞式方法,去调试 2. 获取对应流对象操作对应的对象 这时候自己不能懵,一定要清晰,最好命名就能区别,一搞混 ...
- IIS+PHP上传文件大小限制和上传时间限制,iis7和iis8上传文件大小限制和上传时间限制
先说IIS这边的配置 一:点击站点“管理”下的“配置编辑器”. 二:设 ...
- Asp.Net Core 3.0 学习3、Web Api 文件上传 Ajax请求以及跨域问题
1.创建Api项目 我用的是VS2019 Core3.1 .打开Vs2019 创建Asp.Net Core Web应用程序命名CoreWebApi 创建选择API 在Controller文件夹下面添加 ...
随机推荐
- Jstl标签的使用
一. 配置 JSTL 包括两个 JAR 文件, jstl.jar 和 standard.jar .是什么没有必要管,重在应用( 1+1 ? =2 ,我们没有必要深究,只需要知道这么用就行.). 原文引 ...
- 【不积跬步,无以致千里】VIM查找替换归纳总结zz
http://spaces.msn.com/dingy/blog/cns!2F24B9E66A542581!327.entry VIM中常用的替换模式总结. 1,简单替换表达式 替换命令可以在全文中用 ...
- 汇编语言(学习笔记----寄存器CPU互作原理)
一.段寄存器 1.段寄存器就是提供段地址的,8086CPU有4个段寄存器:CS(代码段寄存器),DS(数据段寄存器),SS(堆栈段寄存器),ES(附加段寄存器) 2.当8086CPU要访问内存时,由这 ...
- myeclipse 10创建maven项目
创建maven项目,这里使用的不是myeclipse自带的maven插件.而是自己 又一次安装的插件,就不啰嗦了,直接上图吧 1.先是安装maven插件.将maven插件解压把它放进E:\xuan\M ...
- Android 进阶学习:事件分发机制全然解析,带你从源代码的角度彻底理解(上)
http://blog.csdn.net/guolin_blog/article/details/9097463 事实上我一直准备写一篇关于Android事件分发机制的文章,从我的第一篇博客開始,就零 ...
- javascript遍历数组
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- (转)ReSharper 配置及用法
1:安装后,Resharper会用他自己的英文智能提示,替换掉 vs2010的智能提示,所以我们要换回到vs2010的智能提示 2:快捷键.是使用vs2010的快捷键还是使用 Resharper的快捷 ...
- 01 MySQL锁概述
锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源(如CPU.RAM.I/O 等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所有 ...
- 中兴电信光纤猫F612管理员密码获取方法
1.telnet 192.168.1.1 账号:root 密码:Zte521 2.输入命令: sendcmd 1 DB p DevAuthInfo 得到管理员账号密码如下: <DM name=& ...
- 小白日记33:kali渗透测试之Web渗透-扫描工具-Burpsuite(一)
扫描工具-Burpsuite Burp Suite是Web应用程序测试的最佳工具之一,成为web安全工具中的瑞士军刀.其多种功能可以帮我们执行各种任务.请求的拦截和修改,扫描web应用程序漏洞,以暴力 ...