留言发布时间功能:
界面:
前台代码:
在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. [置顶] 很荣幸被选为2013年度 CSDN博客之星评选,如果觉得我的文章可以,请投我一票!

    亲爱的小伙伴们,很荣幸我被选为<2013年度CSDN博客之星候选人>,希望大家多多支持,geekguy会继续努力,为大家奉献更好的文章. 投票地址:http://vote.blog.csd ...

  2. 学习LINQ,发现一个好的工具。LINQPad!!

    今日学习LINQ,发现一个好的工具.LINQPad!! 此工具的好处在于,不需要在程序内执行,直接只用工具测试.然后代码通过即可,速度快,简洁方便. 可以生成其LINQ查询对应的lambda和SQL语 ...

  3. Linux下安装、启动MySQL

    启动与停止 1.启动 MySQL安装完成后启动文件mysql在/etc/init.d目录下,在需要启动时运行下面命令即可. [root@localhost mysql]# /etc/init.d/my ...

  4. getDefinitionByName与ApplicationDomain.getDefinition

    主swf 定义:MC,被加载swf 定义:MC.MC1 ①父SWF的应用程序域的新建子域 (默认方式)称其为应用程序域的继承 var app:ApplicationDomain=new Applica ...

  5. string <-> wstring

    // std::string -> std::wstringstd::string s("string");std::wstring ws;ws.assign(s.begin ...

  6. 【工作记录】android手势事件操作记录

    /* 用户按下触摸屏.快速移动后松开 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float vel ...

  7. Oracle学习(七):集合运算

    1.知识点:能够对比以下的录屏进行阅读 SQL> -- 查询10和20号部门的员工的3种方法 SQL> --1. select * from emp where deptno in (10 ...

  8. 如何在Swift里用UnsafeMutablePointer

    下午在适配iPadUI的时候,用到了UIPopoverPresentationController,然后在转屏的时候需要调用UIPopoverPresentationControllerDelegat ...

  9. XtraBackup原理3

    http://mysql.taobao.org/monthly/2016/03/07/ MySQL · 物理备份 · Percona XtraBackup 备份原理 前言 Percona XtraBa ...

  10. Anaconda packages list

    # packages in environment at D:\Applications\Anaconda3:#alabaster 0.7.6 py35_0 anaconda 2.4.0 np110p ...