留言发布时间功能:
界面:
前台代码:
在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播客(留言时间,投票IP,留言限字数,上传视频)的更多相关文章

  1. Asp.Net MVC实现优酷(youku)Web的上传

    优酷第三方上传API没有.NET版本的SDK,让从事.NET开发人员要实现开放平台上传文件无从下手.本文经过一天的预读优酷文档,以NET方式实现了视频上传. 参考: 优酷开放文档 http://ope ...

  2. ASP.NET MVC 网站开发总结(三) ——图片截图上传

    本着简洁直接,我们就直奔主题吧,这里需要使用到一个网页在线截图插件imgareaselect(请自行下载). 前台页面: <!DOCTYPE html> <html> < ...

  3. Java 开源博客 Solo 1.8.0 发布 - 改进文件上传

    本次发布主要是更新了编辑器,使其更好地支持文件上传.(1.8.0 版本变更记录请看这里) 我们的 Markdown 编辑器: 另外,我们对 HTTPS 的支持也更完善了,欢迎大家试用! 简介 Solo ...

  4. wsl 2 unbuntu 部署 asp.net core 使用 nginx 做反向代理,调试文件上传失败

    继上一篇 asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授权 的公司内部项目上线后发现文件上传功能有问题. 上传的文件超过50M以后前端就报错了,没有状态返回,也没有响 ...

  5. asp.net mvc4 easyui datagrid 增删改查分页 导出 先上传后导入 NPOI批量导入 导出EXCEL

    效果图 数据库代码 create database CardManage use CardManage create table CardManage ( ID ,) primary key, use ...

  6. ASP.NET MVC 使用Uploadify实现多文件异步无刷新上传

    软件技术开发,合作请联系QQ:858-048-581 这里我通过使用uploadify组件来实现异步无刷新多文件上传功能. 1.首先下载组件包uploadify,我这里使用的版本是3.1 2.下载后解 ...

  7. 那些年的 网络通信之 TCP/IP 传输控制协议 ip 加 端口 客户端上传文件到服务器端服务器端返回上传成功消息

    多线程开启, 客户端通过 Socket 流 上传文件到服务端的一个小程序练习. 1. 抓住阻塞式方法,去调试 2. 获取对应流对象操作对应的对象 这时候自己不能懵,一定要清晰,最好命名就能区别,一搞混 ...

  8. IIS+PHP上传文件大小限制和上传时间限制,iis7和iis8上传文件大小限制和上传时间限制

    先说IIS这边的配置                                                                  一:点击站点“管理”下的“配置编辑器”. 二:设 ...

  9. Asp.Net Core 3.0 学习3、Web Api 文件上传 Ajax请求以及跨域问题

    1.创建Api项目 我用的是VS2019 Core3.1 .打开Vs2019 创建Asp.Net Core Web应用程序命名CoreWebApi 创建选择API 在Controller文件夹下面添加 ...

随机推荐

  1. 图文讲解:iOS App提交流程

    原文:http://www.toceansoft.com/ios/3287.jhtml 一.证书的导出 1.1.前期工作 首先你需要有一个苹果的开发者帐号,一个Mac系统. 如果没有帐号可以在打开ht ...

  2. [置顶] a+=1/a=+1/a-=1区别-c语言

    1.解释 a+=1/a=+1/a-=1 含义 a+=1 实质等于 a += 1,也就是等于 a = a + 1: a=+1 实质等于 a = +1:[因为运算符中没有=+,很多人误以为是 a =+ 1 ...

  3. Nginx端口的修改

    修改 nginx.conf 文件实现.在 Linux 上该文件的路径为 /usr/local/nginx/conf/nginx.conf,Windows 下 安装目录\conf\nginx.conf. ...

  4. 用C++ 自娱自乐

    最无聊的时光当属 考试前的复习时段了,在一些论坛上看到一些用字符组成的图像,觉得有点意思,于是,自己 用C++ 参考一些论坛的图像,写了下面这个东西,来表达此时的心情. #include<ios ...

  5. Realsense 提取彩色和深度视频流

    一.简要介绍 关于realsense的介绍,网上很多,这里不再赘述,sdk及相关文档可参考realsense SDK,也可参考开发人员专区. 运行代码之前,要确保你已经安装好了realsense的DC ...

  6. 【转】Android 4.4前后版本读取图库图片和拍照完美解决方案

    http://blog.csdn.net/zbjdsbj/article/details/42387551 4.3或以下,选了图片之后,根据Uri来做处理,很多帖子都有了,我就不详细说了.主要是4.4 ...

  7. contiki Makefile.include 四个关注点<contiki学习之二>

    Contiki Makefile.include 笔记 约定:  makefile 包括Makefile.Makefile.xxx,并不单指Makefile 不对makefile的语法进行分析,仅仅关 ...

  8. uva11324 The Largest Clique --- 强连通+dp

    给一个有向图G,求一个子图要求当中随意两点至少有一边可达. 问这个子图中最多含多少个顶点. 首先找SCC缩点建图.每一个点的权值就是该点包括点的个数. 要求当中随意两点可达,实际上全部边仅仅能同方向, ...

  9. main方法执行之前,做什么事

    1.我们知道程序的入口是main方法,那么在执行main方法之前,需要做些什么准备工作呢? 2.main方法执行之前,必须要把non-local static对象构造完成.static对象有:全局对象 ...

  10. JAVA中调用CMD命令,并输出运行结果

    package com.wzw.util; import java.io.BufferedReader; import java.io.InputStreamReader; public class ...