留言发布时间功能:
界面:
前台代码:
在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. [转]freemarker中的list

    转至:http://zhuyuehua.iteye.com/blog/1975251 freemarker list (长度,遍历,下标,嵌套,排序) 1. freemarker获取list的size ...

  2. 不能发现 class "com.uustudio.unote.android.BaseApplication"

    12-13 15:45:46.289: E/AndroidRuntime(3474): java.lang.RuntimeException: Unable to instantiate applic ...

  3. Unity中2D和UGUI图集的理解与使用

    图集 什么是图集? 在使用3D技术开发2D游戏或制作UI时(即使用GPU绘制),都会使用到图集,而使用CPU渲染的2D游戏和UI则不存在图集这个概念(比如Flash的原生显示列表),那么什么是图集呢? ...

  4. thttpd的定时器

    运用了static函数实现文件封装 提升变量访问效率的关键字register,该关键字暗示该变量可能被频繁访问,如果可能,请将值存放在寄存器中 内存集中管理,每个节点在取消后并没有立即释放内存,而是调 ...

  5. 推荐一个CodeProject上的SlideForm控件

    CodeProject有一篇文章介绍了怎么实现一个SlideForm,非常不错,收藏在此. http://www.codeproject.com/KB/dialog/csslideform.aspx ...

  6. C#.net 之货币转换

    利用string.format 和cultureInfo 来进行转换 /// <summary> /// 输入Float格式数字,将其转换为货币表达方式 /// </summary& ...

  7. 返回ListBox选中的多项目

    //返回ListBox选中的多项目 procedure TForm1.Button2Click(Sender: TObject);vari:Integer;s:string;begin   for i ...

  8. Delphi调用Dll的的2种写法

         unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, F ...

  9. 设计一个算法,输出从u到v的全部最短路径(採用邻接表存储)

    思想:用path数组存放路径(初始为空),d表示路径长度(初始为-1),查找从顶点u到v的最短路径过程如图所看到的: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5u ...

  10. android146 360 病毒查杀

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...